diff options
author | m-stephen <truestyle2005@163.com> | 2019-07-10 10:00:35 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-07-10 10:00:35 +0800 |
commit | 6b59db8fb0118633e354b4fff5d615a0f095faa7 (patch) | |
tree | 3765e70808d7167c22ded18b48c014c4b9a94fb7 /platform/darwin/test/MGLRendererConfigurationTests.mm | |
parent | 18f7e4b84d761623a825498398ef58b79ee39ecd (diff) | |
download | qtlocation-mapboxgl-6b59db8fb0118633e354b4fff5d615a0f095faa7.tar.gz |
[ios, macos] Default to local rendering of CJK characters, using system font (#14862)
* Change default CJK font from "PingFang" to "Helvetica"
* Add CHANGELOG.
* Update CHANGELOG.
* [ios] Enable client-side rendering and use `Helvetica` by default. Set `MGLIdeographicFontFamilyName` to `NULL` for using your custom remote font.
* [ios] Update change log
* [ios] Change default CJK configuration in `iosapp` project
* [ios] Update comment
* [ios] return local font name using default system font.
* [ios] Update changelog
* [ios] update changelogs & comments
* [iOS, macOS]Support mac os
* [iOS, macOS] fix bug
* [iOS, macOS] update change log
* [iOS, macOS] fix nit.
* [iOS, macOS] Ability to specify an array of fonts for fallbacks for `localIdeographicFontFamily`
* [iOS, macOS] Update comments
* [iOS, macOS] Update change log
* [iOS, macOS] update for mac OS font family names
* Fix nit.
* Update platform/ios/CHANGELOG.md
Co-Authored-By: Minh Nguyễn <mxn@1ec5.org>
* [iOS, macOS] Set `MGLIdeographicFontFamilyName` to a Boolean value `NO` for using your custom remote font.
* [iOS, macOS] remove `MGLIdeographicFontFamilyName` from info.plist & update Info.plist Keys.md
* [iOS, macOS] remove `MGLIdeographicFontFamilyName` from macOS demo app project and update info.plist Keys.md
* [iOS, macOS] update macOS changelog
* [iOS, macOS] Change docs
* Update Change log
* [iOS, macOS] Test case
* Update platform/macos/docs/guides/Info.plist Keys.md
Co-Authored-By: Jason Wray <friedbunny@users.noreply.github.com>
* Update platform/macos/docs/guides/Info.plist Keys.md
Co-Authored-By: Jason Wray <friedbunny@users.noreply.github.com>
* Update platform/ios/CHANGELOG.md
Co-Authored-By: Jason Wray <friedbunny@users.noreply.github.com>
* Update platform/darwin/src/MGLRendererConfiguration.mm
Co-Authored-By: Jason Wray <friedbunny@users.noreply.github.com>
* Update platform/darwin/test/MGLRendererConfigurationTests.mm
Co-Authored-By: Jason Wray <friedbunny@users.noreply.github.com>
* Update platform/macos/docs/guides/Info.plist Keys.md
Co-Authored-By: Jason Wray <friedbunny@users.noreply.github.com>
* Update platform/macos/docs/guides/Info.plist Keys.md
Co-Authored-By: Jason Wray <friedbunny@users.noreply.github.com>
* Update platform/macos/docs/guides/Info.plist Keys.md
Co-Authored-By: Jason Wray <friedbunny@users.noreply.github.com>
* [iOS, macOS] update comments
* [iOS, macOS] add plist value test && filter for invalid string
* [iOS, macOS] fix nit
* Update platform/ios/docs/guides/Info.plist Keys.md
Co-Authored-By: Jason Wray <friedbunny@users.noreply.github.com>
* Update platform/ios/docs/guides/Info.plist Keys.md
Co-Authored-By: Jason Wray <friedbunny@users.noreply.github.com>
* Update platform/ios/docs/guides/Info.plist Keys.md
Co-Authored-By: Jason Wray <friedbunny@users.noreply.github.com>
* Update platform/macos/CHANGELOG.md
Co-Authored-By: Jason Wray <friedbunny@users.noreply.github.com>
* Update platform/ios/docs/guides/Info.plist Keys.md
Co-Authored-By: Jason Wray <friedbunny@users.noreply.github.com>
* Update platform/ios/docs/guides/Info.plist Keys.md
Co-Authored-By: Jason Wray <friedbunny@users.noreply.github.com>
* [iOS, macOS] add invalid value type test
* Apply own suggestions from code review
Diffstat (limited to 'platform/darwin/test/MGLRendererConfigurationTests.mm')
-rw-r--r-- | platform/darwin/test/MGLRendererConfigurationTests.mm | 105 |
1 files changed, 103 insertions, 2 deletions
diff --git a/platform/darwin/test/MGLRendererConfigurationTests.mm b/platform/darwin/test/MGLRendererConfigurationTests.mm index a0c630ebb5..6483aa3587 100644 --- a/platform/darwin/test/MGLRendererConfigurationTests.mm +++ b/platform/darwin/test/MGLRendererConfigurationTests.mm @@ -6,6 +6,7 @@ static NSString * const MGLRendererConfigurationTests_collisionBehaviorKey = @"M @interface MGLRendererConfiguration (Tests) - (instancetype)initWithPropertyDictionary:(nonnull NSDictionary*)bundle; +- (mbgl::optional<std::string>)_localFontFamilyNameWithPropertyDictionary:(nonnull NSDictionary *)properties; @end @@ -77,14 +78,12 @@ static NSString * const MGLRendererConfigurationTests_collisionBehaviorKey = @"M } - (void)testOverridingMGLCollisionBehaviorPre40 { - // Dictionary = NO, NSUserDefaults = YES { [[NSUserDefaults standardUserDefaults] setObject:@(YES) forKey:MGLRendererConfigurationTests_collisionBehaviorKey]; MGLRendererConfiguration *config = [[MGLRendererConfiguration alloc] initWithPropertyDictionary:@{MGLRendererConfigurationTests_collisionBehaviorKey:@(NO)}]; XCTAssert(config.perSourceCollisions); } - // Dictionary = YES, NSUserDefaults = NO { [[NSUserDefaults standardUserDefaults] setObject:@(NO) forKey:MGLRendererConfigurationTests_collisionBehaviorKey]; @@ -93,4 +92,106 @@ static NSString * const MGLRendererConfigurationTests_collisionBehaviorKey = @"M } } +- (void)testDefaultLocalFontFamilyName { + + MGLRendererConfiguration *config = [[MGLRendererConfiguration alloc] init]; + std::string localFontFamilyName = config.localFontFamilyName.value(); + + 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 + + XCTAssertEqual(localFontFamilyName, systemFontFamilyName, @"Default local font family name should match default system font"); +} + +- (void)testSettingMGLIdeographicFontFamilyNameWithPlistValue { + + MGLRendererConfiguration *config = [[MGLRendererConfiguration alloc] init]; + NSDictionary *dic; + + // `MGLIdeographicFontFamilyName` set to bool value `YES` + { + dic = @{@"MGLIdeographicFontFamilyName": @(YES)}; + std::string localFontFamilyName = ([config _localFontFamilyNameWithPropertyDictionary:dic]).value(); + + 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 + XCTAssertEqual(localFontFamilyName, systemFontFamilyName, @"Local font family name should match default system font name when setting `YES`"); + } + + // `MGLIdeographicFontFamilyName` set to bool value `NO` + { + dic = @{@"MGLIdeographicFontFamilyName": @(NO)}; + mbgl::optional<std::string> localFontFamilyName = [config _localFontFamilyNameWithPropertyDictionary:dic]; + XCTAssertFalse(localFontFamilyName.has_value(), @"Client rendering font should use remote font when setting `NO`"); + } + + // `MGLIdeographicFontFamilyName` set to a valid font string value + { + dic = @{@"MGLIdeographicFontFamilyName": @"PingFang TC"}; + std::string localFontFamilyName = ([config _localFontFamilyNameWithPropertyDictionary:dic]).value(); + std::string targetFontFamilyName = std::string([@"PingFang TC" UTF8String]); + XCTAssertEqual(localFontFamilyName, targetFontFamilyName, @"Local font family name should match a custom valid font name"); + } + + // `MGLIdeographicFontFamilyName` set to an invalid font string value + { + dic = @{@"MGLIdeographicFontFamilyName": @"test font"}; + std::string localFontFamilyName = ([config _localFontFamilyNameWithPropertyDictionary:dic]).value(); + + 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 + XCTAssertEqual(localFontFamilyName, systemFontFamilyName, @"Local font family name should match default system font name when setting an invalid font string"); + } + + // `MGLIdeographicFontFamilyName` set to a valid font family names array value + { + dic = @{@"MGLIdeographicFontFamilyName": @[@"test font 1", @"PingFang TC", @"test font 2"]}; + std::string localFontFamilyName = ([config _localFontFamilyNameWithPropertyDictionary:dic]).value(); + std::string targetFontFamilyName = std::string([@"PingFang TC" UTF8String]); + XCTAssertEqual(localFontFamilyName, targetFontFamilyName, @"Local font family name should match a custom valid font name in a font family names array"); + } + + // `MGLIdeographicFontFamilyName` set to an invalid font family names array value + { + dic = @{@"MGLIdeographicFontFamilyName": @[@"test font 1", @"test font 2", @"test font 3"]}; + std::string localFontFamilyName = ([config _localFontFamilyNameWithPropertyDictionary:dic]).value(); + + 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 + XCTAssertEqual(localFontFamilyName, systemFontFamilyName, @"Local font family name should match default system font name when setting an invalid font family names array"); + } + + // `MGLIdeographicFontFamilyName` set to an invalid value type: NSDictionary, NSNumber, NSData, etc. + { + dic = @{@"MGLIdeographicFontFamilyName": [@"test font 1" dataUsingEncoding:NSUTF8StringEncoding]}; + std::string localFontFamilyName = ([config _localFontFamilyNameWithPropertyDictionary:dic]).value(); + + 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 + XCTAssertEqual(localFontFamilyName, systemFontFamilyName, @"Local font family name should match default system font name when setting an invalid value type"); + } +} + + + @end |