PDF Standard Fonts

The PDF format defines 14 standard fonts which you can use without embedding those fonts:
Family nameFull namePostScript nameStyle
CourierCourierCourierRegular
CourierCourier BoldCourier-BoldBold
CourierCourier ObliqueCourier-ObliqueItalic
CourierCourier Bold ObliqueCourier-BoldObliqueBold + Italic
HelveticaHelveticaHelveticaRegular
HelveticaHelvetica BoldHelvetica-BoldBold
HelveticaHelvetica ObliqueHelvetica-ObliqueItalic
HelveticaHelvetica Bold ObliqueHelvetica-BoldObliqueBold + Italic
TimesTimes RomanTimes-RomanRegular
TimesTimes BoldTimes-BoldBold
TimesTimes ItalicTimes-ItalicItalic
TimesTimes Bold ItalicTimes-BoldItalicBold + Italic
SymbolSymbolSymbolRegular
ZapfDingbatsZapfDingbatsZapfDingbatsRegular

This is great, because those fonts are always available in DynaPDF independent of what the user has installed. Especially with Xojo applications on linux, where DynaPDF doesn't know where system font files are and you have to use them yourself. Same for Xojo Cloud.

If you want to add your own folder with font files, please use AddFontSearchPath (MBS Xojo Plugin) or DynaPDF.AddFontSearchPath (MBS FileMaker Plugin) function.

With DynaPDF 3.0.34.98 and newer, you can use standard fonts also with unicode encoding.

The trouble with buying used licenses

If you need a license for MBS Plugin, please purchase them through an official channel. We sell them in on our website, through Share-It, in the Xojo web store and the K&K Verlag.

Sometimes it happens that someone tries to sell his license. This is legal and possible, but please check with us to be sure the license key is valid and upgradable. And the license key should be named after the seller, so you know we issued it for him. Actually the license agreement always states that you need to have written authorization to transfer it.

But so far some people trying to sell a MBS license are not honest. They got the key somehow, prefer to get cash and the license key of course does not match their name. Please don't buy such a license key.
Having an illegal license does not help you. If this is detected, you have to buy a new license regularly including updates for the past to get back on the right track. Else the lawyers would force you into destroying all your software using the illegal license. This can include that all your customers have to stop using your software, get their money back and of course sue you for compensation.

So please if you got a license key second hand or plan to get one, please contact us to make sure the license key is legal.

How do we know you use an illegal license key?
Well, you may want to come to use and buy an upgrade. Or a good friend of you wants to put you in trouble and reveals your dirty secret. Third, we download a lot of software and scan them for license keys.

Finally as a developer you should yourself know that people need to pay their license to you for you to make a living. So please apply same rules to the tools you use and pay for them.

Reunion utilisateurs XOJO sur paris le vendredi 6 mars

The Xojo group in Paris meets in early March and if you are in the city, be sure to visit them:

Bonjour,

Je reprends le relai de Stéphane Thiroux, pour faire une journée d'information sur XOJO.

Stéphane Pinel ingénieur chez Xojo, nous parlera des futurs évolutions du produit.

Il y aura plusieurs présentations (dtPlugins pour iOS, utilisation des declares, création d'un plugin)

Une participation de 32,55 euros est demandé pour couvrir les frais de la salle.

Pour vous inscrire c'est ici eventbrite.com/event/15426344612/

Bonne journée !


MBS Xojo / Real Studio Plugins, version 15.0pr8

New in this prerelease of the 15.0 plugins:
  • Updated Bonjour SDK on Windows to newer version.
  • Added DNSServiceAddrInfoMBS class.
  • Updated NikonCamera Plugin to work with newer SDKs for D4S, D750 and D810.
  • Fixed crash in NSSearchFieldControlMBS with Real Studio (not Xojo).
  • Added NSSecureTextFieldControlMBS control.
  • Added NSTextViewControlMBS.AcceptTabs property, so you can decide if plugin passes tab key to Xojo framework or not.
  • Updated AppleRemoteMBS with new code and methods.
  • Fixed rare crash problem with Bonjour classes on Windows.
  • Added new DynaPDF classes: DynaPDFMeasureMBS, DynaPDFNumberFormatMBS, DynaPDFPointDataDictionaryMBS, DynaPDFPointDataMBS, DynaPDFSysFontMBS and DynaPDFViewportMBS.
  • Improved DynaPDFImageMBS class.
  • Added private constructors to most DynaPDF classes.
  • Added rate, pitch and volume for WindowsPlayerMBS class. As volume for right and left can be set individual, you can pan yourself.
  • Added QLPreviewViewControlMBS class.
Download: macsw.de/plugin/Prerelease. Or ask us to be added to our shared Dropbox folder.

The 2015 Xojo Developer Conference, 100 days till keynote

Just 100 days left until we all meet for Geoff's keynote. Already over 60 people signed up for the conference, so it may sell out like last year.

The good news on the hotel is that plenty of rooms are still available. The bad news is that you have to call and ask for the rate for the conference. It's $169 per room and the website doesn't find it. Also there seem to be no suites available for discounted rates, just the regular ones. Anyway, as we can cancel room up to 2 days before conference, you should make your reservation early and later modify or cancel it.

The 2015 Xojo Developer Conference will take place April 29 - May 1, 2015 at the Radisson hotel in fabulous downtown Austin!

XDC is the best place for Xojo users to learn from the experts, network with other Xojo users from around the world and meet the Xojo engineers. We will have sessions for everyone wanting to get the most out of their tool - from topics for those who are just getting their feet wet, to sessions for the most advanced Xojo developer.

Smileys and UTF32

Here a few smileys:

😀😁😂😃😄😅😆😇😈😉😊😋😌😍😎😏😐😑😒😓😔😕😖😗😘😙😚😛
😜😝😞😟😠😡😢😣😤😥😦😧😨😩😪😫😬😭😮😯😰😱😲😳😴😵😶😷

Do you see all 56?
Well, in our plugins we have a function to Encode Text to HTML and it didn't work for those smileys. The reason is that those are outside the normal 16bit unicode range. They need 2 characters in UTF16. Most functions in our plugins don't look for such things. And normally it doesn't matter as we pass through texts. But for encoding to HTML we need to handle UTF32 well. So plugin needs to decode 16bit character pairs to make sure they are encoded correctly.
So after a couple of hours work on our plugin's text handling you can now enjoy plugins doing it right!

XojoTalk podcast

The XojoTalk podcast just got it's fifth episode. So go and listen to it!
  • Shoving Phones In Their Pockets with Geoff Perlman
  • That's A Lot Of Tens with Bob Keeney
  • Developer of Long Standing with Eric Gibbon
  • Grizzled Veterans with Travis Hill
  • Where's My Column? with Marc Zeedar
Subscribe at iTunes or to RSS Feed

MBS Xojo / Real Studio Plugins, version 15.0pr7

New in this prerelease of the 15.0 plugins:
  • Updated DynaPDF to version 3.0.38.108.
  • Deprecated CocoaControlMBS control. Please use concrete Cocoa controls and tell us if something is missing.
  • Added NSDatePickerControlMBS control.
  • Added WindowsPlayerMBS class.
  • Changed NSScrollViewMBS to be a subclass of NSControlMBS. See example for ContainerControl in a ScrollView.
  • Fixed bug in class extension function setters not being called! (introduced in pr5).
  • Marked AppleScriptMBS as deprecated in favor of NSAppleScriptMBS as Apple deprecated the underlaying functions for Mac OS X 10.8.
  • Changed function EncodingToHTMLMBS and DecodingFromHTMLMBS to work correctly for higher Unicode characters like smileys. Also changed a couple of string handling functions to support that.
  • The DynaPDF dialog for complaining about old serial number shows the key now.
  • Added Brightness property for CGDisplayMBS class.
  • Updated CGDisplay* classes to show more properties in debugger and work in console projects.
  • Remove last cases where plugin would query Gestalt for system version and cause a warning on console.
  • Added advanced Twain methods for capabilities.
  • Added CoreAudioListenerMBS class to listen for events like audio setup changed.
  • Added contents, labels and identifiers functions to ABMultiValueMBS class to help easier inspecting what's inside.
  • We limit curl progress event and yielding to maximum 60 per second, just to make sure we don't spend all CPU time on progress update or yielding.
  • Fixed bug for SQL ODBC plugin functions to return error messages without garbage text in-between.
  • Changed SQL Plugin to default to Scrollable = false for cursors. You can enable it if you need.
Download: macsw.de/plugin/Prerelease. Or ask us to be added to our shared Dropbox folder.

Use 3 GB of memory for Xojo app on Windows

Open command line prompt as admin on Windows 7 or newer and run:

bcdedit /set IncreaseUserVa 3072

Now you can use over 2900 MB of memory with your Xojo made app.
(detailed instructions)

This should also help the IDE as it needs a lot of memory for plugins and leaked memory.

Xojo 2014r3.2 released

Xojo LogoJust a few fixes for currency data type, web listbox, report designer and modules import/export.

Please install.

xojo.com/download

Buy OmegaBundle and upgrade to DynaPDF Lite or Pro

Just a quick note to everyone interested in DynaPDF Lite/Pro license.
If you get the Omegabundle, you receive a DynaPDF Starter license. You can upgrade that license to Lite/Pro for a discounted price.

Interested, please email us.
We'll remind everyone later when the bundle offer ends and all licenses are delivered on their upgrade paths available.

PS: Bundle extended through 9th March. This is the final end date!

Scheduled in Feedback

In the last days we saw some new things in Feedback which are scheduled. We are happy that the Xojo application retina support is now scheduled. I'm also happy that auto and text functions for the plugin SDK are scheduled.

So one way to learn what is coming in the future to Xojo is to check the Feedback application for what's reported there. Within something like 40000 feedback cases, it's difficult to find something. But well, here are 20 scheduled cases. This means that each item has been assigned to an engineer and be scheduled to ship in one of the future releases of Xojo. Maybe interesting to know what Xojo engineers work on?
  • 3215: Allow compilation using the command-line
  • 3353: 64 bit Applications Support
  • 3851: Viewing Custom Controls in WIndow Editor.
  • 7836: [WEB] [Cocoa] Feature request: NSTableView support
  • 9053: [IDESubmitted] Report: Group Header 'Repeat on New Page' Option
  • 9054: [IDESubmitted] Report Option: Need field option for Supress Repeated Values
  • 9205: [WEB] Report Feature Request: Margin Guides
  • 9206: [WEB] Report Feature Request: Pagination Features
  • 10311: Support HTTP 1.1 in HTTPSocket and HTTPSecureSocket
  • 10701: Add ability to Export PDFs
  • 13417: Need a WebComboBox
  • 16046: Add WebStyledText class to support styling text (with links) for WebTextField, WebTextArea, WebLabel, WebButton, WebLink, etc.
  • 16671: Support building desktop applications for OS X with LLVM
  • 17424: WebMapViewer: Add Directions
  • 18399: Make the HTMLViewer on Windows use the most recent version of Internet Explorer that is installed
  • 18541: WebMoviePlayer Lacking Simple Stop Method
  • 20384: Support Drag and Drop for web applications
  • 24074: undeprecate REALPictureClearCache
  • 25108: Xojo application is not retina display aware.
  • 37329: Add support for the new "Text" datatype in the plugin SDK
  • 37330: Add support for the new Auto type in the plugin SDK
We recommend everyone to use Feedback. At least sign in and put your 5 favorite cases in the top case list. So until we have HTTP 1.1, we use the MBS CURL Plugin. And until we have PDF built into Xojo, we use DynaPDF Plugin.

MBS Xojo / Real Studio Plugins, version 15.0pr6

New in this prerelease of the 15.0 plugins:
  • Fixed JPEGImporterMBS.ReadHeader to once again read ICC profile data and no longer reports an error about too few scanlines read.
  • Improved LCMS2TransformMBS.Transform to correctly handle row bytes differences between input/output bitmaps.
  • Changed PictureMBS to create memoryblock for memory allocation, so you can get reference of that memoryblock via Memory property.
  • Added new properties for LCMS2TransformMBS class to help debugging.
  • Changed 20 properties to be debugger visible in LCMS2 plugin.
  • Added OptionKeepAliveMBS for socket class.
  • Several functions working with variants can handle Text data type in variants (They are converted to String for plugin).
  • Added CURLSMultiMBS class.
Download: macsw.de/plugin/Prerelease. Or ask us to be added to our shared Dropbox folder.

Use SQLCipher with MBS SQL Plugin functions

If you are interested in encrypted SQLite databases with SQLCipher, you can use their library with our plugins.

You simply get a copy of their library, either the commercial or the open source one. For open source, I built my own copies today for Mac and below you can download them. When you use my SQL plugin functions, you normally set option to point to libsqlite.dylib file. But instead to this file, you point to the libsqlcipher.dylib file. Now you run as first command "PRAGMA key = 'passphrase';" to pass in your password for the database. All following calls should run normal and the file is encrypted.

This is not the same encryption as used by Xojo. They use the SQLite Encryption Extension from Hwaci - Applied Software Research (see hwaci.com/sw/sqlite/)

Download my built library: sqlciphermac.zip

xDev Magazine Issue 13.1

The January/February 2015 (13.1) issue of xDev Magazine is now available.
Here's a quick preview of what's inside:

* Birmingham 2014 * by Richard Duke
Most of us couldn't make it to the U.K. for their annual Xojo Conference, but fortunately Richard was there to capture it all in words and photos.

* Data Access * by Kevin Cully and Scott Boss
What's the best way to access data within Xojo? Kevin and Scott walk you through the pros and cons of three different paradigms.

* Xojo Health Journal * by JC Cruz
Health logging is all the rage, so longtime xDev contributor JC Cruz documents creating a health journalling application.

* iOS First Look * by Marc Zeedar
We've been waiting for this day for a long time: Xojo can now create iOS applications! But what is the experience like? Marc covers an overview of iOS development using Xojo, explaining what you'll need, and how it works.

Plus: columns on creating our first iOS app, Xojo 2014r3, database modeling, RegEx literals, tips on listbox row coloring, and much more.

New data types in Xojo 2014r3

So a few weeks passed and we had time to check details on new data types. Years ago I appreciated books like Inside Turbo Pascal (or similar name) which explained all the details behind the runtime, compiler and data structures used there. Sometimes I'd wish someone knowing internals would document them in nice articles to give us interesting knowledge. Especially sometimes you can write better code or optimize for performance if you know how things work internally. Until that, here are my observations on the new data types:

Text

The new text data type is interesting. The idea is to have a data type for a string of unicode characters is good and removes a couple of downsides on the old string data types. We have a lot of fallback code in MBS plugins to handle things right. For example the plugin will default to some text encoding if you pass in a string with no text encoding. On the other side we still need to put JPEG data into string to write them into a binarystream object. In the last months I moved a couple of methods to use Memoryblocks for a block of bytes instead of a string, but that causes a lot of unnecessary automatic conversion.

The new text data type is not a normal class, so you can't assign it simply to object variable. But it is reference counted like the old string class and any objects in Xojo, so memory storage is efficient. Especially as text is either stored in ASCII or Unicode internally depending of content. Most texts for us western people is just ASCII, but anything containing umlauts or the asian characters will be stored as UTF16. And it looks like UTF16 is converted to Normalization Form Canonical Composition. The ä (umlaut a) for example is stored as one unicode character and not as two like Mac OS X does it for file names.

Auto

The new auto data type is similar to variant. It wraps the data type, but does not do the auto conversion. So assigning an auto value with text inside to an integer will give a TypeMismatchException. This data type is also not a regular object internally (can't be assigned to object variable), but it is reference counted. At least passing an auto value around seems not to copy it.

But something is strange there. Auto seems only to be a number internally, maybe a key in a dictionary the runtime manages? Or a structure based data type? Well, we have to wait for Xojo Inc. to explain some of the internals, so we can make better use of the auto objects.

To know type of data in auto, you can use the new framework's introspection functions:

dim a as auto = 123
Dim info As Xojo.Introspection.TypeInfo = Xojo.Introspection.GetType(a)
msgbox info.text

which gives you text "Int32" here. Please note that older introspection functions like Introspection.GetType do not work on auto data type.

While you can't assign nil to a text, you can do so to auto. And auto can be compared with nil, which is also the default value. And is actual integer/pointer value of auto in that case is indeed zero (you see that if you debug a plugin function taking auto parameter). Vartype function seems to work on auto data type just fine, but that may be just due to the unpacking and repacking as variant.

Variants

When you stuff text in a variant, you get a new variant type with number 37 internally. At least vartype() returns this number now for a text variant. To get back the text from the variant, you can use TextValue function. Or use StringValue which converts to normal string. For array of text, well this will gives vartype 4096 + 37.

For auto data type, we can note that if you put an auto into a variant, it's unpacked first and the data type itself is wrapped for the variant. So putting auto with text into variant, gives you a variant of type text.

Plugins

For the plugin we created a couple of feedback cases to allow text (37329) and auto (37330) data types. Until we have some API, we ignore them in general. For variants we treat them as strings and use StringValue property. Arrays of text can be passed to plugin inside a variant, but the plugin can only ignore them currently.

MBS Xojo / Real Studio Plugins, version 15.0pr5

New in this prerelease of the 15.0 plugins:
  • Added CGBitmapContextMBS.CreateRGB and CGColorSpaceMBS.CreateWithHandle functions.
  • Improved GameKit classes. No longer build for Mac PPC.
  • Reorganized plugins internally. Globals and Class Extensions are now registered as modules.
Download: macsw.de/plugin/Prerelease. Or ask us to be added to our shared Dropbox folder.
The biggest plugin in space...

Archives

Mar 2024
Feb 2024
Jan 2024
Dec 2023
Nov 2023
Oct 2023
Sep 2023
Aug 2023
Jul 2023
Jun 2023
May 2023
Apr 2023
Mar 2023
Feb 2023
Jan 2023
Dec 2022
Nov 2022
Oct 2022
Sep 2022
Aug 2022
Jul 2022
Jun 2022
May 2022
Apr 2022
Mar 2022
Feb 2022
Jan 2022
Dec 2021
Nov 2021
Oct 2021
Sep 2021
Aug 2021
Jul 2021
Jun 2021
May 2021
Apr 2021
Mar 2021
Feb 2021
Jan 2021
Dec 2020
Nov 2020
Oct 2020
Sep 2020
Aug 2020
Jul 2020
Jun 2020
May 2020
Apr 2020
Mar 2020
Feb 2020
Jan 2020
Dec 2019
Nov 2019
Oct 2019
Sep 2019
Aug 2019
Jul 2019
Jun 2019
May 2019
Apr 2019
Mar 2019
Feb 2019
Jan 2019
Dec 2018
Nov 2018
Oct 2018
Sep 2018
Aug 2018
Jul 2018
Jun 2018
May 2018
Apr 2018
Mar 2018
Feb 2018
Jan 2018
Dec 2017
Nov 2017
Oct 2017
Sep 2017
Aug 2017
Jul 2017
Jun 2017
May 2017
Apr 2017
Mar 2017
Feb 2017
Jan 2017
Dec 2016
Nov 2016
Oct 2016
Sep 2016
Aug 2016
Jul 2016
Jun 2016
May 2016
Apr 2016
Mar 2016
Feb 2016
Jan 2016
Dec 2015
Nov 2015
Oct 2015
Sep 2015
Aug 2015
Jul 2015
Jun 2015
May 2015
Apr 2015
Mar 2015
Feb 2015
Jan 2015
Dec 2014
Nov 2014
Oct 2014
Sep 2014
Aug 2014
Jul 2014
Jun 2014
May 2014
Apr 2014
Mar 2014
Feb 2014
Jan 2014
Dec 2013
Nov 2013
Oct 2013
Sep 2013
Aug 2013
Jul 2013
Jun 2013
May 2013
Apr 2013
Mar 2013
Feb 2013
Jan 2013
Dec 2012
Nov 2012
Oct 2012
Sep 2012
Aug 2012
Jul 2012
Jun 2012
May 2012
Apr 2012
Mar 2012
Feb 2012
Jan 2012
Dec 2011
Nov 2011
Oct 2011
Sep 2011
Aug 2011
Jul 2011
Jun 2011
May 2011
Apr 2011
Mar 2011
Feb 2011
Jan 2011
Dec 2010
Nov 2010
Oct 2010
Sep 2010
Aug 2010
Jul 2010
Jun 2010
May 2010
Apr 2010
Mar 2010
Feb 2010
Jan 2010
Dec 2009
Nov 2009
Oct 2009
Sep 2009
Aug 2009
Jul 2009
Apr 2009
Mar 2009
Feb 2009
Dec 2008
Nov 2008
Oct 2008
Aug 2008
May 2008
Apr 2008
Mar 2008
Feb 2008