# HG changeset patch # User bsmith@81767d24-ef19-dc11-ae90-00e081727c95 # Date 1611774445 0 # Node ID fe64be23680e322a9a53f34c7bebe35f90fc888b # Parent 281e2df2c0228c26c8f9f9dd26c483650bca096d Mac: Switch to using NSFontManager fontWithFamily instead of NSFont fontWithName fontWithName: required the PostScript font name which could be the same as the family name, but often had no spaces, or extra text associated. Since we need to use the shared font manager, pull it out of the font chooser. Also "New Times Roman" worked on most platforms but required "Times New Roman" on Mac, so hopefully this will work on other platforms too. diff -r 281e2df2c022 -r fe64be23680e dwtest.c --- a/dwtest.c Wed Jan 27 09:35:38 2021 +0000 +++ b/dwtest.c Wed Jan 27 19:07:25 2021 +0000 @@ -1398,11 +1398,11 @@ dw_listbox_append(fontname, "Verdana"); dw_listbox_append(fontname, "Helvetica"); dw_listbox_append(fontname, "DejaVu Sans"); - dw_listbox_append(fontname, "New Times Roman"); - dw_listbox_append(fontname, "New Times Roman Bold"); - dw_listbox_append(fontname, "New Times Roman Italic"); - dw_listbox_append(fontname, "New Times Roman Italic Bold"); - dw_listbox_append(fontname, "New Times Roman Bold Italic"); + dw_listbox_append(fontname, "Times New Roman"); + dw_listbox_append(fontname, "Times New Roman Bold"); + dw_listbox_append(fontname, "Times New Roman Italic"); + dw_listbox_append(fontname, "Times New Roman Italic Bold"); + dw_listbox_append(fontname, "Times New Roman Bold Italic"); dw_box_pack_start(hbox, fontname, 150, -1, TRUE, FALSE, 1); dw_box_pack_start(notebookbox4, hbox, -1, -1, TRUE, FALSE, 1); diff -r 281e2df2c022 -r fe64be23680e mac/dw.m --- a/mac/dw.m Wed Jan 27 09:35:38 2021 +0000 +++ b/mac/dw.m Wed Jan 27 19:07:25 2021 +0000 @@ -840,6 +840,7 @@ @end NSApplication *DWApp = nil; +NSFontManager *DWFontManager = nil; NSMenu *DWMainMenu; NSFont *DWDefaultFont; DWTimerHandler *DWHandler; @@ -2065,10 +2066,8 @@ @interface DWFontChoose : NSFontPanel { DWDialog *dialog; - NSFontManager *fontManager; } -(void)setDialog:(DWDialog *)input; --(void)setFontManager:(NSFontManager *)input; -(DWDialog *)dialog; @end @@ -2076,13 +2075,12 @@ -(BOOL)windowShouldClose:(id)window { DWDialog *d = dialog; dialog = nil; - NSFont *pickedfont = [fontManager selectedFont]; + NSFont *pickedfont = [DWFontManager selectedFont]; dw_dialog_dismiss(d, pickedfont); [window orderOut:nil]; return NO; } -(void)setDialog:(DWDialog *)input { dialog = input; } --(void)setFontManager:(NSFontManager *)input { fontManager = input; } -(DWDialog *)dialog { return dialog; } @end @@ -8705,8 +8703,18 @@ if(name && (name++)) { int size = atoi(fontname); + char *Italic = strstr(name, " Italic"); + char *Bold = strstr(name, " Bold"); + size_t len = (Italic ? (Bold ? (Italic > Bold ? (Bold - name) : (Italic - name)) : (Italic - name)) : (Bold ? (Bold - name) : strlen(name))); + char *newname = alloca(len+1); + + memset(newname, 0, len+1); + strncpy(newname, name, len); - font = [NSFont fontWithName:[ NSString stringWithUTF8String:name ] size:(float)size]; + font = [DWFontManager fontWithFamily:[NSString stringWithUTF8String:newname] + traits:(Italic ? NSItalicFontMask : 0)|(Bold ? NSBoldFontMask : 0) + weight:5 + size:(float)size]; } } return font; @@ -10212,7 +10220,6 @@ { /* Create the Color Chooser Dialog class. */ static DWFontChoose *fontDlg = nil; - static NSFontManager *fontManager = nil; DWDialog *dialog; NSFont *font = nil; @@ -10231,18 +10238,16 @@ else { [NSFontManager setFontPanelFactory:[DWFontChoose class]]; - fontManager = [NSFontManager sharedFontManager]; - fontDlg = (DWFontChoose *)[fontManager fontPanel:YES]; + fontDlg = (DWFontChoose *)[DWFontManager fontPanel:YES]; } dialog = dw_dialog_new(fontDlg); if(font) - [fontManager setSelectedFont:font isMultiple:NO]; + [DWFontManager setSelectedFont:font isMultiple:NO]; else - [fontManager setSelectedFont:[NSFont fontWithName:@"Helvetica" size:9.0] isMultiple:NO]; + [DWFontManager setSelectedFont:[NSFont fontWithName:@"Helvetica" size:9.0] isMultiple:NO]; [fontDlg setDialog:dialog]; - [fontDlg setFontManager:fontManager]; - [fontManager orderFrontFontPanel:fontManager]; + [DWFontManager orderFrontFontPanel:DWFontManager]; /* Wait for them to pick a color */ @@ -12512,6 +12517,7 @@ [DWApp setMainMenu:DWMainMenu]; DWObj = [[DWObject alloc] init]; DWDefaultFont = nil; + DWFontManager = [NSFontManager sharedFontManager]; #ifdef BUILDING_FOR_MOJAVE if (@available(macOS 10.14, *)) {