Skip to content
This repository has been archived by the owner on Aug 8, 2023. It is now read-only.

[ios, macos] Default to local rendering of CJK characters, using system font #14862

Merged
merged 51 commits into from
Jul 10, 2019
Merged
Show file tree
Hide file tree
Changes from 20 commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
84ae427
Change default CJK font from "PingFang" to "Helvetica"
m-stephen Jun 6, 2019
11579ef
Add CHANGELOG.
m-stephen Jun 6, 2019
9c56d2c
Update CHANGELOG.
m-stephen Jun 6, 2019
45fa35e
[ios] Enable client-side rendering and use `Helvetica` by default. Se…
m-stephen Jun 10, 2019
c5ba207
[ios] Update change log
m-stephen Jun 10, 2019
d7d5f00
[ios] Change default CJK configuration in `iosapp` project
m-stephen Jun 10, 2019
3f11ba4
[ios] Update comment
m-stephen Jun 10, 2019
b5c4157
[ios] return local font name using default system font.
m-stephen Jun 12, 2019
a228b63
[ios] Update changelog
m-stephen Jun 12, 2019
1da72a7
[ios] update changelogs & comments
m-stephen Jun 12, 2019
a71fe6b
[iOS, macOS]Support mac os
m-stephen Jun 12, 2019
e6e933e
[iOS, macOS] fix bug
m-stephen Jun 12, 2019
d486c24
[iOS, macOS] update change log
m-stephen Jun 12, 2019
514f570
[iOS, macOS] fix nit.
m-stephen Jun 13, 2019
2819f9e
[iOS, macOS] Ability to specify an array of fonts for fallbacks for `…
m-stephen Jun 13, 2019
61335ba
[iOS, macOS] Update comments
m-stephen Jun 13, 2019
2c607dc
[iOS, macOS] Update change log
m-stephen Jun 13, 2019
5750022
[iOS, macOS] update for mac OS font family names
m-stephen Jun 13, 2019
15752ef
Merge branch 'master' into Stephen-CJK
m-stephen Jun 13, 2019
41b582f
Fix nit.
m-stephen Jun 13, 2019
6b3d599
Update platform/ios/CHANGELOG.md
m-stephen Jun 14, 2019
30fff23
[iOS, macOS] Set `MGLIdeographicFontFamilyName` to a Boolean value `N…
m-stephen Jun 14, 2019
cc8620b
[iOS, macOS] remove `MGLIdeographicFontFamilyName` from info.plist & …
m-stephen Jun 14, 2019
1a33224
[iOS, macOS] remove `MGLIdeographicFontFamilyName` from macOS demo ap…
m-stephen Jun 14, 2019
92c07a9
[iOS, macOS] update macOS changelog
m-stephen Jun 14, 2019
77c8b19
Merge branch 'master' into Stephen-CJK
m-stephen Jun 14, 2019
02118db
[iOS, macOS] Change docs
m-stephen Jul 4, 2019
2e5b1c6
Update Change log
m-stephen Jul 4, 2019
225f3e4
Merge branch 'master' into Stephen-CJK
m-stephen Jul 4, 2019
4b9a218
[iOS, macOS] Test case
m-stephen Jul 4, 2019
ab9ff7f
Update platform/macos/docs/guides/Info.plist Keys.md
m-stephen Jul 9, 2019
6af745c
Update platform/macos/docs/guides/Info.plist Keys.md
m-stephen Jul 9, 2019
5b0b7f1
Update platform/ios/CHANGELOG.md
m-stephen Jul 9, 2019
4fc272b
Update platform/darwin/src/MGLRendererConfiguration.mm
m-stephen Jul 9, 2019
613e6bf
Update platform/darwin/test/MGLRendererConfigurationTests.mm
m-stephen Jul 9, 2019
c15205c
Update platform/macos/docs/guides/Info.plist Keys.md
m-stephen Jul 9, 2019
5369630
Update platform/macos/docs/guides/Info.plist Keys.md
m-stephen Jul 9, 2019
f095d05
Update platform/macos/docs/guides/Info.plist Keys.md
m-stephen Jul 9, 2019
473c548
[iOS, macOS] update comments
m-stephen Jul 9, 2019
2c4c172
[iOS, macOS] add plist value test && filter for invalid string
m-stephen Jul 9, 2019
b1f7fbe
Merge branch 'master' into Stephen-CJK
m-stephen Jul 9, 2019
8d94c1c
[iOS, macOS] fix nit
m-stephen Jul 9, 2019
bbb1ad7
Update platform/ios/docs/guides/Info.plist Keys.md
m-stephen Jul 9, 2019
b37b31f
Update platform/ios/docs/guides/Info.plist Keys.md
m-stephen Jul 9, 2019
7b627e9
Update platform/ios/docs/guides/Info.plist Keys.md
m-stephen Jul 9, 2019
48ae2a5
Update platform/macos/CHANGELOG.md
m-stephen Jul 9, 2019
0868c3e
Update platform/ios/docs/guides/Info.plist Keys.md
m-stephen Jul 9, 2019
bd979ae
Update platform/ios/docs/guides/Info.plist Keys.md
m-stephen Jul 9, 2019
7e4b86b
[iOS, macOS] add invalid value type test
m-stephen Jul 9, 2019
6a494d3
Merge branch 'master' into Stephen-CJK
m-stephen Jul 9, 2019
155e2e8
Apply own suggestions from code review
friedbunny Jul 9, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 13 additions & 5 deletions platform/darwin/src/MGLRendererConfiguration.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,19 @@ MGL_EXPORT
/** The name of the font family to use for client-side text rendering.

Currently only used for CJK glyphs. Changing this at run time is not currently
supported. Enable client-side rendering of CJK glyphs by setting
`MGLIdeographicFontFamilyName` in your containing app's Info.plist to a value
which will be available at run time. Default font for local ideograph font family
is "PingFang". */
@property (nonatomic, readonly) std::string localFontFamilyName;
supported. By default, client-side rendering is enabled for CJK glyphs using Apple
system default font.

Set `MGLIdeographicFontFamilyName` in your containing app's Info.plist to a string
m-stephen marked this conversation as resolved.
Show resolved Hide resolved
m-stephen marked this conversation as resolved.
Show resolved Hide resolved
value which will be available at run time, e.g. "PingFang TC".

Set `MGLIdeographicFontFamilyName` in your containing app's Info.plist to a array of
font family names. Once the front ones are unavaiable, it will fallback to others until
using default system font.

Set `MGLIdeographicFontFamilyName` to `NULL` for using your custom remote font.
*/
@property (nonatomic, readonly) mbgl::optional<std::string> localFontFamilyName;

/**
A Boolean value indicating whether symbol layers may enable per-source symbol
Expand Down
34 changes: 31 additions & 3 deletions platform/darwin/src/MGLRendererConfiguration.mm
Original file line number Diff line number Diff line change
Expand Up @@ -69,10 +69,38 @@ - (const float)scaleFactor {
return mbgl::optional<std::string>();
}

- (std::string)localFontFamilyName {
NSString *fontFamilyName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"MGLIdeographicFontFamilyName"];
- (mbgl::optional<std::string>)localFontFamilyName {

std::string systemFontFamilyName;
#if TARGET_OS_IPHONE
systemFontFamilyName = std::string([[UIFont systemFontOfSize:0 weight:UIFontWeightRegular].familyName UTF8String]);
#else
systemFontFamilyName = std::string([[NSFont systemFontOfSize:0 weight:NSFontWeightRegular].familyName UTF8String]);
#endif

return fontFamilyName ? std::string([fontFamilyName UTF8String]) : std::string("PingFang");
id fontFamilyName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"MGLIdeographicFontFamilyName"];
if([fontFamilyName isKindOfClass:[NSString class]])
{
if([fontFamilyName isEqualToString:@"NULL"]){
m-stephen marked this conversation as resolved.
Show resolved Hide resolved
return mbgl::optional<std::string>();
}
return fontFamilyName ? std::string([fontFamilyName UTF8String]) : systemFontFamilyName;
}
//Ability to specify an array of fonts for fallbacks for `localIdeographicFontFamily`
m-stephen marked this conversation as resolved.
Show resolved Hide resolved
else if ([fontFamilyName isKindOfClass:[NSArray class]]){
for(NSString *name in fontFamilyName){
#if TARGET_OS_IPHONE
if([[UIFont familyNames] containsObject:name]){
return std::string([name UTF8String]);
}
#else
if([[[NSFontManager sharedFontManager] availableFontFamilies] containsObject:name]){
return std::string([name UTF8String]);
}
#endif
}
}
return systemFontFamilyName;
}

@end
1 change: 1 addition & 0 deletions platform/ios/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ Mapbox welcomes participation and contributions from everyone. Please read [CONT
## master

* Fixed a crash caused by incorrect `MGLMapViewImpl` renderable size. ([#14810](https://github.com/mapbox/mapbox-gl-native/pull/14810))
* Fixed an issue that caused the map to ignore the remote fonts for CJK Kanji glyphs. Added ability to specify an array of fonts for fallbacks for local ideographic font family.([#14862](https://github.com/mapbox/mapbox-gl-native/pull/14862))
m-stephen marked this conversation as resolved.
Show resolved Hide resolved
* Fixed queryRenderedFeatues bug caused by incorrect sort feature index calculation. ([#14884](https://github.com/mapbox/mapbox-gl-native/pull/14884))

## 5.1.0
Expand Down
2 changes: 1 addition & 1 deletion platform/ios/app/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
<key>LSRequiresIPhoneOS</key>
<true/>
<key>MGLIdeographicFontFamilyName</key>
<string>PingFang TC</string>
<string>Helvetica</string>
m-stephen marked this conversation as resolved.
Show resolved Hide resolved
<key>NSHumanReadableCopyright</key>
<string>© 2014–2019 Mapbox</string>
<key>NSLocationAlwaysUsageDescription</key>
Expand Down