2022-04-06 01:18:07 +00:00
|
|
|
|
// Copyright 2021 Signal Messenger, LLC
|
|
|
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
|
|
|
|
|
|
import { assert } from 'chai';
|
|
|
|
|
|
|
|
|
|
import {
|
|
|
|
|
fontSniffer,
|
|
|
|
|
getFontNameByTextScript,
|
|
|
|
|
} from '../../util/getFontNameByTextScript';
|
|
|
|
|
import { setupI18n } from '../../util/setupI18n';
|
|
|
|
|
|
|
|
|
|
describe('getFontNameByTextScript', () => {
|
|
|
|
|
it('has arabic', () => {
|
|
|
|
|
const text = 'الثعلب البني السريع يقفز فوق الكلب الكسول';
|
|
|
|
|
assert.isTrue(fontSniffer.hasArabic(text), 'arabic');
|
|
|
|
|
assert.isFalse(fontSniffer.hasLatin(text), 'latin');
|
|
|
|
|
assert.isFalse(fontSniffer.hasJapanese(text), 'japanese');
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('has chinese (simplified)', () => {
|
|
|
|
|
const text = '敏捷的棕色狐狸跳过了懒狗';
|
|
|
|
|
assert.isTrue(fontSniffer.hasCJK(text), 'cjk');
|
|
|
|
|
assert.isFalse(fontSniffer.hasLatin(text), 'latin');
|
|
|
|
|
assert.isFalse(fontSniffer.hasJapanese(text), 'japanese');
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('has chinese (traditional)', () => {
|
|
|
|
|
const text = '敏捷的棕色狐狸跳過了懶狗';
|
|
|
|
|
assert.isTrue(fontSniffer.hasCJK(text), 'cjk');
|
|
|
|
|
assert.isFalse(fontSniffer.hasLatin(text), 'latin');
|
|
|
|
|
assert.isFalse(fontSniffer.hasJapanese(text), 'japanese');
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('has cyrillic (Bulgarian)', () => {
|
|
|
|
|
const text = 'Бързата кафява лисица прескача мързеливото куче';
|
|
|
|
|
assert.isFalse(fontSniffer.hasLatin(text), 'latin');
|
|
|
|
|
assert.isTrue(fontSniffer.hasCyrillic(text), 'cyrillic');
|
|
|
|
|
assert.isFalse(fontSniffer.hasArabic(text), 'arabic');
|
|
|
|
|
});
|
|
|
|
|
|
2023-01-01 11:41:40 +00:00
|
|
|
|
it('has cyrillic (Ukrainian)', () => {
|
2022-04-06 01:18:07 +00:00
|
|
|
|
const text = 'Швидка бура лисиця стрибає через ледачого пса';
|
|
|
|
|
assert.isFalse(fontSniffer.hasLatin(text), 'latin');
|
|
|
|
|
assert.isTrue(fontSniffer.hasCyrillic(text), 'cyrillic');
|
|
|
|
|
assert.isFalse(fontSniffer.hasArabic(text), 'arabic');
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('has devanagari', () => {
|
|
|
|
|
const text = 'तेज, भूरी लोमडी आलसी कुत्ते के उपर कूद गई';
|
|
|
|
|
assert.isTrue(fontSniffer.hasDevanagari(text), 'devanagari');
|
|
|
|
|
assert.isFalse(fontSniffer.hasLatin(text), 'latin');
|
|
|
|
|
assert.isFalse(fontSniffer.hasCyrillic(text), 'cyrillic');
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('has japanese', () => {
|
|
|
|
|
const text = '速い茶色のキツネは怠惰な犬を飛び越えます';
|
|
|
|
|
assert.isFalse(fontSniffer.hasDevanagari(text), 'devanagari');
|
|
|
|
|
assert.isFalse(fontSniffer.hasLatin(text), 'latin');
|
|
|
|
|
assert.isTrue(fontSniffer.hasJapanese(text), 'japanese');
|
|
|
|
|
assert.isTrue(fontSniffer.hasCJK(text), 'cjk');
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('throws when passing in an invalid text style', () => {
|
|
|
|
|
const text = 'abc';
|
|
|
|
|
|
|
|
|
|
assert.throws(() => {
|
|
|
|
|
getFontNameByTextScript(text, -1);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
assert.throws(() => {
|
|
|
|
|
getFontNameByTextScript(text, 99);
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('returns the correct font names in the right order (japanese)', () => {
|
|
|
|
|
const text = '速い茶色のキツネは怠惰な犬を飛び越えます';
|
|
|
|
|
|
|
|
|
|
const actual = getFontNameByTextScript(text, 0);
|
|
|
|
|
const expected =
|
|
|
|
|
'"Hiragino Sans W3", "PingFang SC Regular", SimHei, sans-serif';
|
|
|
|
|
assert.equal(actual, expected);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('returns the correct font names in the right order (latin)', () => {
|
|
|
|
|
const text = 'The quick brown fox jumps over the lazy dog';
|
|
|
|
|
|
|
|
|
|
const actual = getFontNameByTextScript(text, 0);
|
|
|
|
|
const expected = 'Inter, sans-serif';
|
|
|
|
|
assert.equal(actual, expected);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('returns the correct font names (chinese simplified)', () => {
|
|
|
|
|
const text = '敏捷的棕色狐狸跳过了懒狗';
|
|
|
|
|
|
2022-09-27 21:01:06 +00:00
|
|
|
|
const actual = getFontNameByTextScript(text, 0, setupI18n('zh-CN', {}));
|
2022-04-06 01:18:07 +00:00
|
|
|
|
const expected = '"PingFang SC Regular", SimHei, sans-serif';
|
|
|
|
|
assert.equal(actual, expected);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('returns the correct font names (chinese traditional)', () => {
|
|
|
|
|
const text = '敏捷的棕色狐狸跳過了懶狗';
|
|
|
|
|
|
2022-09-27 21:01:06 +00:00
|
|
|
|
const actual = getFontNameByTextScript(text, 0, setupI18n('zh-TW', {}));
|
2022-04-06 01:18:07 +00:00
|
|
|
|
const expected = '"PingFang TC Regular", "JhengHei TC Regular", sans-serif';
|
|
|
|
|
assert.equal(actual, expected);
|
|
|
|
|
});
|
|
|
|
|
});
|