Hi,

CTFontCreateUIFontForLanguage() returns fonts with same sizes for both iOS and Mac OS X. See table below.

Unfortunately I made a mistake when I wrote 15.0 for CTFontCreateUIFontForLanguage(kCTFontPushButtonFontType) font size, unfortunately it is 13.0. Other sizes reported were correct (I have verified it yet once).


        iPad3 (iOS7.0)  MacOSX 10.8
kCTFontUserFontType     12      12
kCTFontUserFixedPitchFontType   10      10
kCTFontSystemFontType   13      13
kCTFontEmphasizedSystemFontType         13      13
kCTFontSmallSystemFontType      11      11
kCTFontSmallEmphasizedSystemFontType    11      11
kCTFontMiniSystemFontType       9       9
kCTFontMiniEmphasizedSystemFontType     9       9
kCTFontViewsFontType    12      12
kCTFontApplicationFontType      13      13
kCTFontLabelFontType    10      10
kCTFontMenuTitleFontType        14      14
kCTFontMenuItemFontType         14      14
kCTFontMenuItemMarkFontType     14      14
kCTFontMenuItemCmdKeyFontType   14      14
kCTFontWindowTitleFontType      13      13
kCTFontPushButtonFontType       13      13
kCTFontUtilityWindowTitleFontType       11      11
kCTFontAlertHeaderFontType      13      13
kCTFontSystemDetailFontType     9       9
kCTFontEmphasizedSystemDetailFontType   9       9
kCTFontToolbarFontType  11      11
kCTFontSmallToolbarFontType     10      10
kCTFontMessageFontType  13      13
kCTFontPaletteFontType  11      11
kCTFontToolTipFontType  11      11
kCTFontControlContentFontType   12      12



Oldrich

On 10/30/13 4:38 PM, Felipe Heidrich wrote:
Hi,

Correct me if I'm wrong, to use UIWhatever or NSWhatever we will need 
Objective-C (or use the ugly objc_msgSend).
That is more work as we don't have Objective-C in native font code. Besides, 
creating a Button requires, usually,  a lot more boilerplate code. We will also 
have to link to UIKit frameworks, etc.

Now, creating a CTFont using  
CTFontCreateUIFontForLanguage(kCTFontPushButtonFontType) would be a very easy 
change.

Oldrich, could you please prepare a table with the fontSize for all values on  
CTFontUIFontType for MacOSX and iOS ?

Thanks

On Oct 30, 2013, at 6:38 AM, Stephen F Northover <steve.x.northo...@oracle.com> wrote:

Let's use UIButton as this seems to match the stack overflow discussion.

Steve

On 2013-10-30 7:51 AM, Oldrich Maticka wrote:
I have tried simple app with several controls. Fonts in Interface Builder -

UIButton - System 15.0
UILabel  - System 17.0
UITextField - System 14.0
UITextView - System 14.0

Same fontsize - 15.0 has UIButton's label created at runtime.

UIFont class methods for getting system font information return:
+ labelFontSize             17.0
+ buttonFontSize          18.0
+ smallSystemFontSize 12.0
+ systemFontSize         14.0


In fx Java_com_sun_javafx_font_MacFontFinder_getSystemFontSize returns 13.0

We can use different CTFontUIFontType in this method to return something 
"better" than 13.0 -
e.g. with kCTFontPushButtonFontType as an argument to 
CTFontCreateUIFontForLanguage() it returns 15.0, but we need to decide, what we 
want to use as default. Should be our system default the size same as for 
UIButton, UILabel or other control?


I was using iPad3 (iOS 7.0, Xcode 5.0).

Olda

On 10/29/13 7:32 PM, Stephen F Northover wrote:
I was going to create a dummy control (say a Button) and ask for the font.  
Just an idea.

Steve

On 2013-10-29 2:18 PM, Felipe Heidrich wrote:
The code Richard sent is creating a dummy font and asking for its size.

The problem is that there are about 3 thousand different fonts on the Mac ;-)

Here we are creating a CTFont. For Mac OS X most native apps probably would be using a 
NSFont (cause that is what cocoa controls take). Likewise on iOS I think the 
"common" font is UIFont (cause I think that is what UIKIt controls take).

Could anyone fire up Xcode, create a dummy iOS app, create a UIFont and see 
what is the size ?

Felipe


On Oct 29, 2013, at 8:40 AM, Stephen F Northover <steve.x.northo...@oracle.com> 
wrote:

If the OS is reporting the wrong value for the default a classic trick is to 
create a dummy control that normally has the font we want and query that.

Steve

On 2013-10-29 11:21 AM, Richard Bair wrote:
Hi guys,

The default font for iOS is supposed to be System Bold 15 (according to 
http://stackoverflow.com/questions/17325152/what-size-font-is-the-title-in-a-default-uibutton
 anyway), and it does look more correct to me. Our code is getting to this 
native method in MacFontFinder.c

JNIEXPORT jfloat JNICALL 
Java_com_sun_javafx_font_MacFontFinder_getSystemFontSize
   (JNIEnv *env, jclass obj)
{
     CTFontRef font = CTFontCreateUIFontForLanguage(
                          kCTFontSystemFontType,
                          0.0, //get system font with default size
                          NULL);
     jfloat systemFontDefaultSize = (jfloat) CTFontGetSize (font);
     CFRelease(font);
     return systemFontDefaultSize;
}


However it appears the return value is 13 instead of 15 (and I don't know what the actual 
default font family / weight is that we're returning). It is possible the answer coming 
from this native API call is "wrong". Any ideas?

Richard

Reply via email to