Mac Italics and Bold
This commit is contained in:
parent
2017068cbf
commit
a85ddda2a7
|
@ -338,7 +338,36 @@ global u32 system_font_method = SystemFontMethod_FilePath;
|
||||||
|
|
||||||
internal
|
internal
|
||||||
Sys_Font_Path(name, parameters){
|
Sys_Font_Path(name, parameters){
|
||||||
// TODO(allen)
|
b32 italic = (parameters != 0 && parameters->italics);
|
||||||
|
b32 bold = (parameters != 0 && parameters->bold);
|
||||||
|
i32 pt_size = 12;
|
||||||
|
if (parameters != 0){
|
||||||
|
pt_size = parameters->pt_size;
|
||||||
|
}
|
||||||
|
|
||||||
|
OSX_Font_Match match = osx_get_font_match(name, pt_size, italic, bold);
|
||||||
|
|
||||||
|
Font_Path path = {0};
|
||||||
|
if (match.path != 0){
|
||||||
|
Partition *part = &shared_vars.font_scratch;
|
||||||
|
path.temp = begin_temp_memory(part);
|
||||||
|
|
||||||
|
i32 len = str_size(match.path);
|
||||||
|
char *buffer = push_array(part, char, len + 1);
|
||||||
|
if (buffer == 0){
|
||||||
|
sysshared_partition_grow(part, l_round_up_i32(len + 1, KB(4)));
|
||||||
|
buffer = push_array(part, char, len + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (buffer != 0){
|
||||||
|
push_align(part, 8);
|
||||||
|
memcpy(buffer, match.path, len + 1);
|
||||||
|
path.len = len;
|
||||||
|
path.name = buffer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
Sys_Font_Data_Not_Used;
|
Sys_Font_Data_Not_Used;
|
||||||
|
|
|
@ -726,6 +726,8 @@ osx_timer_seconds(void){
|
||||||
return(result);
|
return(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NSFontManager *font_manager = 0;
|
||||||
|
|
||||||
NSString *get_font_path(NSFont *font){
|
NSString *get_font_path(NSFont *font){
|
||||||
CFStringRef name = (CFStringRef)[font fontName];
|
CFStringRef name = (CFStringRef)[font fontName];
|
||||||
CGFloat size = [font pointSize];
|
CGFloat size = [font pointSize];
|
||||||
|
@ -735,9 +737,60 @@ NSString *get_font_path(NSFont *font){
|
||||||
return(path);
|
return(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
OSX_Font_Match
|
||||||
|
osx_get_font_match(char *name, i32 pt_size, b32 italic, b32 bold){
|
||||||
|
if (font_manager == 0){
|
||||||
|
font_manager = [NSFontManager sharedFontManager];
|
||||||
|
}
|
||||||
|
|
||||||
|
NSString *name_string = [NSString stringWithUTF8String:name];
|
||||||
|
NSFontTraitMask trait_mask = 0;
|
||||||
|
if (italic){
|
||||||
|
trait_mask = (trait_mask | NSItalicFontMask);
|
||||||
|
}
|
||||||
|
NSInteger weight = 5;
|
||||||
|
if (bold){
|
||||||
|
weight = 9;
|
||||||
|
}
|
||||||
|
|
||||||
|
b32 used_base_file = false;
|
||||||
|
NSFont *font = [font_manager
|
||||||
|
fontWithFamily: name_string
|
||||||
|
traits: trait_mask
|
||||||
|
weight: weight
|
||||||
|
size:(float)pt_size];
|
||||||
|
|
||||||
|
if (font == nil){
|
||||||
|
font = [font_manager
|
||||||
|
fontWithFamily: name_string
|
||||||
|
traits: 0
|
||||||
|
weight: 5
|
||||||
|
size:(float)pt_size];
|
||||||
|
used_base_file = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
OSX_Font_Match match = {0};
|
||||||
|
if (font != nil){
|
||||||
|
NSString *path = get_font_path(font);
|
||||||
|
char *path_c = 0;
|
||||||
|
if (path != nil){
|
||||||
|
path_c = (char*)[path UTF8String];
|
||||||
|
}
|
||||||
|
if (path_c != 0){
|
||||||
|
match.path = path_c;
|
||||||
|
match.used_base_file = used_base_file;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return(match);
|
||||||
|
}
|
||||||
|
|
||||||
OSX_Loadable_Fonts
|
OSX_Loadable_Fonts
|
||||||
osx_list_loadable_fonts(void){
|
osx_list_loadable_fonts(void){
|
||||||
NSFontManager *font_manager = [NSFontManager sharedFontManager];
|
if (font_manager == 0){
|
||||||
|
font_manager = [NSFontManager sharedFontManager];
|
||||||
|
}
|
||||||
|
|
||||||
NSArray<NSString*> *fonts = [font_manager availableFontFamilies];
|
NSArray<NSString*> *fonts = [font_manager availableFontFamilies];
|
||||||
|
|
||||||
OSX_Loadable_Fonts result = {0};
|
OSX_Loadable_Fonts result = {0};
|
||||||
|
@ -768,15 +821,6 @@ osx_list_loadable_fonts(void){
|
||||||
result.paths[i] = path_c;
|
result.paths[i] = path_c;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
for (int i = 0; i < count; ++i){
|
|
||||||
char *name = result.names[i];
|
|
||||||
char *path = result.paths[i];
|
|
||||||
fprintf(stdout, "found: %s\nat: %s\n", name, path);
|
|
||||||
fflush(stdout);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return(result);
|
return(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -62,6 +62,11 @@ typedef struct OSX_Loadable_Fonts{
|
||||||
i32 count;
|
i32 count;
|
||||||
} OSX_Loadable_Fonts;
|
} OSX_Loadable_Fonts;
|
||||||
|
|
||||||
|
typedef struct OSX_Font_Match{
|
||||||
|
char *path;
|
||||||
|
b32 used_base_file;
|
||||||
|
} OSX_Font_Match;
|
||||||
|
|
||||||
// In C++ layer.
|
// In C++ layer.
|
||||||
extern OSX_Objective_C_Vars osx_objc;
|
extern OSX_Objective_C_Vars osx_objc;
|
||||||
|
|
||||||
|
@ -135,6 +140,9 @@ osx_close_app(void);
|
||||||
external f32
|
external f32
|
||||||
osx_timer_seconds(void);
|
osx_timer_seconds(void);
|
||||||
|
|
||||||
|
external OSX_Font_Match
|
||||||
|
osx_get_font_match(char *name, i32 pt_size, b32 italic, b32 bold);
|
||||||
|
|
||||||
external OSX_Loadable_Fonts
|
external OSX_Loadable_Fonts
|
||||||
osx_list_loadable_fonts(void);
|
osx_list_loadable_fonts(void);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue