[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master 1229e61: * src/macfont.m (macfont_create_family_wit
From: |
YAMAMOTO Mitsuharu |
Subject: |
[Emacs-diffs] master 1229e61: * src/macfont.m (macfont_create_family_with_symbol): Accept localized names. |
Date: |
Tue, 25 Aug 2015 02:08:20 +0000 |
branch: master
commit 1229e61ab8fe7143fbe7d8a2686a6521627b77a2
Author: YAMAMOTO Mitsuharu <address@hidden>
Commit: YAMAMOTO Mitsuharu <address@hidden>
* src/macfont.m (macfont_create_family_with_symbol): Accept localized names.
---
src/macfont.m | 55 +++++++++++++++++++++++++------------------------------
1 files changed, 25 insertions(+), 30 deletions(-)
diff --git a/src/macfont.m b/src/macfont.m
index 02dc468..d0d7252 100644
--- a/src/macfont.m
+++ b/src/macfont.m
@@ -1038,49 +1038,44 @@ static CFStringRef
macfont_create_family_with_symbol (Lisp_Object symbol)
{
CFStringRef result = NULL, family_name;
- CFComparatorFunction family_name_comparator;
+ CFDictionaryRef attributes = NULL;
+ FontDescriptorRef pat_desc = NULL;
if (macfont_get_family_cache_if_present (symbol, &result))
return result ? CFRetain (result) : NULL;
family_name = cfstring_create_with_string_noencode (SYMBOL_NAME (symbol));
- if (family_name == NULL)
- return NULL;
-
+ if (family_name)
{
- family_name_comparator = CTFontManagerCompareFontFamilyNames;
+ attributes =
+ CFDictionaryCreate (NULL,
+ (const void **) &MAC_FONT_FAMILY_NAME_ATTRIBUTE,
+ (const void **) &family_name, 1,
+ &kCFTypeDictionaryKeyCallBacks,
+ &kCFTypeDictionaryValueCallBacks);
+ CFRelease (family_name);
}
-
- if ((*family_name_comparator) (family_name, CFSTR ("LastResort"), NULL)
- == kCFCompareEqualTo)
- result = CFSTR ("LastResort");
- else
+ if (attributes)
{
- CFIndex i, count;
- CFArrayRef families = macfont_copy_available_families_cache ();
+ pat_desc = mac_font_descriptor_create_with_attributes (attributes);
+ CFRelease (attributes);
+ }
+ if (pat_desc)
+ {
+ FontDescriptorRef desc =
+ mac_font_descriptor_create_matching_font_descriptor (pat_desc, NULL);
- if (families)
+ if (desc)
{
- count = CFArrayGetCount (families);
- i = CFArrayBSearchValues (families, CFRangeMake (0, count),
- (const void *) family_name,
- family_name_comparator, NULL);
- if (i < count)
- {
- CFStringRef name = CFArrayGetValueAtIndex (families, i);
-
- if ((*family_name_comparator) (name, family_name, NULL)
- == kCFCompareEqualTo)
- result = CFRetain (name);
- }
- CFRelease (families);
+ result =
+ mac_font_descriptor_copy_attribute (desc,
+ MAC_FONT_FAMILY_NAME_ATTRIBUTE);
+ CFRelease (desc);
}
+ macfont_set_family_cache (symbol, result);
+ CFRelease (pat_desc);
}
- CFRelease (family_name);
-
- macfont_set_family_cache (symbol, result);
-
return result;
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] master 1229e61: * src/macfont.m (macfont_create_family_with_symbol): Accept localized names.,
YAMAMOTO Mitsuharu <=