diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml new file mode 100644 index 0000000..71abe1e --- /dev/null +++ b/.github/workflows/linux.yml @@ -0,0 +1,30 @@ +name: Linux + +on: + push: + branches: + - '*' + tags-ignore: + - '*' + pull_request: + +jobs: + raku: + strategy: + matrix: + os: + - ubuntu-latest + raku-version: + - 'latest' + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v3 + - uses: Raku/setup-raku@v1 + with: + raku-version: ${{ matrix.raku-version }} + - name: Install Dependencies + run: | + zef install --/test --deps-only . + zef install --/test App::Prove6 + - name: Run Tests + run: prove6 -l t diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml new file mode 100644 index 0000000..8113ce8 --- /dev/null +++ b/.github/workflows/macos.yml @@ -0,0 +1,30 @@ +name: MacOS + +on: + push: + branches: + - '*' + tags-ignore: + - '*' + pull_request: + +jobs: + raku: + strategy: + matrix: + os: + - macos-latest + raku-version: + - 'latest' + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v3 + - uses: Raku/setup-raku@v1 + with: + raku-version: ${{ matrix.raku-version }} + - name: Install Dependencies + run: | + zef install --/test --deps-only . + zef install --/test App::Prove6 + - name: Run Tests + run: prove6 -l t diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index 94f0c2a..0000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,32 +0,0 @@ -name: test -on: - push: - branches: - - '*' - tags-ignore: - - '*' - pull_request: -jobs: - raku: - strategy: - matrix: - os: - - ubuntu-latest - #- macOS-latest - #- windows-latest - raku-version: - - "2020.07" - - "2019.11" - runs-on: ${{ matrix.os }} - steps: - - uses: actions/checkout@v2 - - uses: Raku/setup-raku@v1 - - run: raku -V - - name: Install dependencies - run: | - # install and test if need be (includes [test-depends]) - zef install . - #zef install --/test --deps-only . - zef install --/test App::Prove6 - - name: Run tests - run: prove6 -l t diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml new file mode 100644 index 0000000..4225250 --- /dev/null +++ b/.github/workflows/windows.yml @@ -0,0 +1,28 @@ +name: Win64 + +on: + push: + branches: + - '*' + tags-ignore: + - '*' + pull_request: + +jobs: + raku: + strategy: + matrix: + os: + - windows-latest + raku-version: + - 'latest' + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v3 + - uses: Raku/setup-raku@v1 + with: + raku-version: ${{ matrix.raku-version }} + - name: Install Dependencies + run: zef install --/test --test-depends --deps-only . + - name: Run Tests + run: zef --debug --/prove --/tap-harness test . diff --git a/Changes b/Changes index 623248c..d773b32 100644 --- a/Changes +++ b/Changes @@ -1,4 +1,31 @@ {{$NEXT}} + - Make the default output for a single word be a + suitable word for an arg regex selection, e.g., + abbrev "Args" => "A|Ar|Arg|Args" + + Add info in the README + - Separate tests into one for each arg + - Add t/Utils/Subs.rakumod with a 'test-junction' routine + +2.1.0 2023-06-14T16:05:14-05:00 + - Removed the unneeded 'is export' trait from sub 'abbreviations'. + - Improved sorting routines for consistency and expected results + by using an updated 'sort-list' function to clarify the + type and order of the various sorting types + defined. + + Added an enum Sort-type to define the sort types + + Made the default sort type LS (length first, + then by string order). + + Added an option to reverse the output + + Added tests + - Updated the README for improved grammar and better + coverage of details. + - Added a :$min-length parameter for abbreviations. + - Created a new output format: HA (Hash Abbrev) + consisting of the word as key and its shortest + abbreviation as its value. + + added tests for it + - Made the default output the HA type. + - Use the three-OS test workflow. 2.0.0 2022-07-23T17:49:28-05:00 - Remove the auto-abbreviate sub and rewrite the get-abbrevs sub diff --git a/META6.json b/META6.json index 5513d0d..7ce4ef8 100644 --- a/META6.json +++ b/META6.json @@ -25,5 +25,5 @@ ], "test-depends": [ ], - "version": "2.0.0" + "version": "2.1.0" } diff --git a/README.md b/README.md index 463fa7a..cc5bbe9 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,9 @@ +[![Actions Status](https://github.com/tbrowder/Abbreviations/actions/workflows/linux.yml/badge.svg)](https://github.com/tbrowder/Abbreviations/actions) [![Actions Status](https://github.com/tbrowder/Abbreviations/actions/workflows/macos.yml/badge.svg)](https://github.com/tbrowder/Abbreviations/actions) [![Actions Status](https://github.com/tbrowder/Abbreviations/actions/workflows/windows.yml/badge.svg)](https://github.com/tbrowder/Abbreviations/actions) + NAME ==== -**Abbreviations** - Provides abbreviations for an input set of one or more words +Abbreviations - Provides abbreviations for an input set of one or more words SYNOPSIS ======== @@ -9,18 +11,63 @@ SYNOPSIS ```raku use Abbreviations; my $words = 'A ab Abcde'; -# The exported routine: +# The main exported routine: my %abbrevs = abbreviations $words; +say %abbrevs.gist; +# OUTPUT: «{A => A, Abcde => Ab, ab => a}␤» ``` -There are two shorter routine name abbreviations one can use that are always exported: +DESCRIPTION +=========== + +**Abbreviations** is a module with one automatically exported subroutine, `abbreviations`, which takes as input a set of words and returns the original set with added unique abbreviations for the set. (Note the input words are also abbreviations in the context of this module.) + +Its signature: + + sub abbreviations($word-set, #= Str, List, or Hash (Set) + :$out-type = HA, #= the default, HashAbbrev + :$lower-case, #= convert the word st to lowercase + :$min-length, #= minimum abbreviation length + ) is export {...} + +A *word* satisfies the Raku regex `$word ~~ /\S+/` which is quite loose. Using programs can of course further restrict that if need be. For example, for use with module **Opt::Handler** words must satisfy this regex: `$word ~~ //`. + +A natural consequence of generating all the abbreviations for a set of one word is this: the output provides a regex alternation which matches any partial length of the target word. For example, given a target word 'Args': + + use Abbreviations; + use Test; + my $target = "Args"; + my $regex = abbrev $target; # OUTPUT: «"A|Ar|Arg|Args"␤»; + my $res = False; + my @w = $regex.split('|'); + for @w { + when /<$regex>/ { + $res = True + } + default { + $res = False + } + } + is $res, True; # OUTPUT: «ok 1␤» + +As shown in the example above, limiting the input set to one word results in the output of a regex alternation string. The rest of this description applies to sets of two or more words. The input word set can be in one of three forms: (1) a list (recommended), (2) a string containing the words separated by spaces, or (3) as a hash (or set) with the words being keys of the hash (set members). Duplicate words will be automatically and quietly eliminated. + +Note the input word set will not be modified unless the `:lower-case` option is used. In that case, all characters will be transformed to lower-case and any new duplicate words deleted. + +If the user wishes, he or she can restrict the minimum length of the generated abbreviations by using the `:$min-length` parameter. + +One will normally get the result as a hash with the input words as keys with their shortest abbreviation as values (return type HA), but the return type can be specified via `enum Out-type` if desired by selecting one of the `:$output-type` options. For example: + + my %abbrevs = abbrevs @words, :output-type(AH); + +There are two shorter alias names for `sub abbreviations` one can use that are always exported: ```raku abbrevs abbrev ``` -In the sprit of the module, one can `use Abbreviations :ALL;` and have these additional short forms available: +In the sprit of the module, one can `use Abbreviations :ALL;` and have these additional shorter alias names available: ```raku abbre @@ -30,33 +77,26 @@ In the sprit of the module, one can `use Abbreviations :ALL;` and have these add a ``` -Each of those is individually available by adding its name as an adverb, e.g.: +Each of those is individually available by adding its name as an adverb, for example: ```raku use Abbreviations :abb; my %abb = abb $words; ``` -DESCRIPTION -=========== - -**Abbreviations** is a module with one automatically exported subroutine, `abbreviations`, which takes as input a set of words and returns the original set with added unique abbreviations for the set. (Note the input words are also abbreviations in the context of this module.) - -A *word* satisfies the Raku regex `$word ~~ /\S+/` which is quite loose. Using programs can of course further restrict that if need be. For example, for use with module **Opt::Handler** words must satisfy this regex: `$word ~~ //`. (**CAUTION**: Words containing other than letters have not been tested and results are unknown. The author is willing to investigate those words if any user is so interested and files an issue indicating such.) - -The input word set can be in one of two forms: a list or a string containing the words separated by spaces. Duplicate words will be automatically and quietly eliminated. An empty word set will cause an exception. +### `enum Out-type` -Note the input word set will not be modified unless the `:lower-case` option is used. In that case, all characters will be transformed to lower-case. + enum Out-type is export ; -One will normally get the result as a hash, but the return type can be specified via an `enum` if desired by selecting one of the `:out-type` options: `AH` (AbbrevHash), `AL` (AbbrevList), `H` (Hash), `L` (List), or `S` (String). For example, +The *enum* `Out-type` is exported automatically as it is required for using `sub abbreviations`. It has the following types: - my %abbrevs = abbrevs @words, :out-type(AH); + * `HA` (HashAbbrev) -### Output types by `enum Out-type` +The default *HashAbbrev* (`HA`) returned will have input words as keys whose value will be the shortest valid abbreviation. * `H` (Hash) -The default *Hash* (`H`) returned will have input words as keys whose value will be a sorted list of one or more valid abbreviations (sorted by length, shortest first). +A variant of `HA`, the *Hash* (`H`) returned will have input words as keys whose value will be a sorted list of its valid abbreviations (sorted by length, shortest first, then by `Str` order). * `AH` (AbbrevHash) @@ -67,12 +107,17 @@ An *AbbrevHash* (`AH`) is keyed by all of the valid abbreviations for the input An *AbbrevList* (`AL`) is special in that the returned list is the one, shortest abbreviation for each of the input words in input order. For example, my @w = ; - my @abb = abbrevs @w, :lower-case, :out-type(AL); - say @abb; # OUTPUT: «[m tu w th f sa su]␤» + my @abb = abbrevs @w, :output-type(AL); + say @abb; # OUTPUT: «M Tu W Th F Sa Su␤» + +Note that a hash (or set) input type will not reliably provide this output as expected since the keys are not stored in order. Instead, the ouput will be based on a list of the hash's keys. In effect, entering `%out = abbreviations %in` is the same as: + + my @inputlist = %in.keys.sort({.chars, .Str}'; + my %out = abbreviations @inputlist; * `L` (List) -A *List* (`L`) contains all of the valid abbreviations for the input word list, including the words themselves, sorted first by the default Raku sort and then by length (shortest first). +A *List* (`L`) contains all of the valid abbreviations for the input word list, including the words themselves, sorted by length, then character order. * `S` (String) @@ -80,7 +125,7 @@ A *String* (`S`) is the string formed by joining the *List* by a single space be ### Improved abbreviation search -The abbreviation algorithm has been improved in the following way: The input word set is formed into subgroups comprised of each input word. Abbreviations are created for each word, abbreviations shared by two or words are eliminated, then all those abbreviations are combined into one set. The result will be the largest possible set of unique abbreviations for a given input word set. +The abbreviation algorithm has been improved from the original (as found on [https://rosettacode.org](https://rosettacode.org)) in the following way: The input word set is formed into subgroups comprised of each input word. Abbreviations are created for each word, abbreviations shared by two or words are eliminated, then all those abbreviations are combined into one set. The result will be the largest possible set of unique abbreviations for a given input word set. For example, given an input set consisting of the words `A ab Abcde`, the default output hash of abbreviations (with the original words as keys) contains a total of seven abbreviations: @@ -99,18 +144,35 @@ The result is ab => ['ab], abcde => ['abc', 'abcd', 'abcde'], +Notice the input word **ab** now has only one abbreviation and **abcde** has only three. + Other exported symbols ---------------------- ### `sub sort-list` - sub sort-list(@list, :longest-first --> List) is export(:sort) {...} + sub sort-list(@list, :$type = SL, :$reverse --> List) is export(:sort) + {...} -This routine sorts the input list first by the default Raku sort and then by word length. The order by length is by shortest abbreviation first unless the `:longest-first` option is used. This is the routine used for all the lists produced as output in this module *except* for the *AbbrevList* (`AL`) which keeps the original word set order. +By default, this routine sorts all lists by word length, then by Str order. The order by length is by the shortest abbreviation first unless the `:$reverse` option is used. This is the routine used for all the output types produced by this module *except* the *AbbrevList* (`AL`) which keeps the original word set order. -### `enum Out-type` +The routine's output can be modified for other uses by entering the `:$type` parameter to choose another of the s. + +### `enum Sort-type` + + enum Sort-type is export(:sort) < SL LS SS LL N>; + +The `Sort-type`s are: + + * SL - order by Str, then order by Length + + * LS - order by Length, then order by Str + + * SS - Str order only + + * LL - Length order only -The *enum* `Out-type` is exported automatically as it is required for use of `sub abbreviations`. + * N - Numerical order only (falls back to SS if any words are not numbers) AUTHOR ====== @@ -129,7 +191,7 @@ CREDITS COPYRIGHT and LICENSE ===================== -Copyright © 2020-2022 Tom Browder +Copyright © 2020-2023 Tom Browder This library is free software; you may redistribute or modify it under the Artistic License 2.0. diff --git a/TODO b/dev/TODO similarity index 100% rename from TODO rename to dev/TODO diff --git a/dev/abbrev-test.list b/dev/abbrev-test.list new file mode 100644 index 0000000..3cbd40e --- /dev/null +++ b/dev/abbrev-test.list @@ -0,0 +1,5829 @@ +ABeeZee-Italic.ttf +ABeeZee-Regular.ttf +Abel-Regular.ttf +AbhayaLibre-Bold.ttf +AbhayaLibre-ExtraBold.ttf +AbhayaLibre-Medium.ttf +AbhayaLibre-Regular.ttf +AbhayaLibre-SemiBold.ttf +Aboreto-Regular.ttf +AbrilFatface-Regular.ttf +AbyssinicaSIL-Regular.ttf +Aclonica-Regular.ttf +Acme-Regular.ttf +Actor-Regular.ttf +Adamina-Regular.ttf +AdobeBlank-Regular.ttf +AdventPro-Italic[wdth,wght].ttf +AdventPro[wdth,wght].ttf +Agdasima-Bold.ttf +Agdasima-Regular.ttf +AguafinaScript-Regular.ttf +Akatab-Black.ttf +Akatab-Bold.ttf +Akatab-ExtraBold.ttf +Akatab-Medium.ttf +Akatab-Regular.ttf +Akatab-SemiBold.ttf +AkayaKanadaka-Regular.ttf +AkayaTelivigala-Regular.ttf +Akronim-Regular.ttf +AksaraBaliGalang-Regular.ttf +Akshar[wght].ttf +Aladin-Regular.ttf +Alata-Regular.ttf +Alatsi-Regular.ttf +AlbertSans-Italic[wght].ttf +AlbertSans[wght].ttf +Aldrich-Regular.ttf +Alef-Bold.ttf +Alef-Regular.ttf +Alegreya-Italic[wght].ttf +AlegreyaSC-Black.ttf +AlegreyaSC-BlackItalic.ttf +AlegreyaSC-Bold.ttf +AlegreyaSC-BoldItalic.ttf +AlegreyaSC-ExtraBold.ttf +AlegreyaSC-ExtraBoldItalic.ttf +AlegreyaSC-Italic.ttf +AlegreyaSC-Medium.ttf +AlegreyaSC-MediumItalic.ttf +AlegreyaSC-Regular.ttf +AlegreyaSans-Black.ttf +AlegreyaSans-BlackItalic.ttf +AlegreyaSans-Bold.ttf +AlegreyaSans-BoldItalic.ttf +AlegreyaSans-ExtraBold.ttf +AlegreyaSans-ExtraBoldItalic.ttf +AlegreyaSans-Italic.ttf +AlegreyaSans-Light.ttf +AlegreyaSans-LightItalic.ttf +AlegreyaSans-Medium.ttf +AlegreyaSans-MediumItalic.ttf +AlegreyaSans-Regular.ttf +AlegreyaSans-Thin.ttf +AlegreyaSans-ThinItalic.ttf +AlegreyaSansSC-Black.ttf +AlegreyaSansSC-BlackItalic.ttf +AlegreyaSansSC-Bold.ttf +AlegreyaSansSC-BoldItalic.ttf +AlegreyaSansSC-ExtraBold.ttf +AlegreyaSansSC-ExtraBoldItalic.ttf +AlegreyaSansSC-Italic.ttf +AlegreyaSansSC-Light.ttf +AlegreyaSansSC-LightItalic.ttf +AlegreyaSansSC-Medium.ttf +AlegreyaSansSC-MediumItalic.ttf +AlegreyaSansSC-Regular.ttf +AlegreyaSansSC-Thin.ttf +AlegreyaSansSC-ThinItalic.ttf +Alegreya[wght].ttf +Aleo-Bold.ttf +Aleo-BoldItalic.ttf +Aleo-Italic.ttf +Aleo-Light.ttf +Aleo-LightItalic.ttf +Aleo-Regular.ttf +AlexBrush-Regular.ttf +Alexandria[wght].ttf +AlfaSlabOne-Regular.ttf +Alice-Regular.ttf +Alike-Regular.ttf +AlikeAngular-Regular.ttf +Alkalami-Regular.ttf +Alkatra[wght].ttf +Allan-Bold.ttf +Allan-Regular.ttf +Allerta-Regular.ttf +AllertaStencil-Regular.ttf +Allison-Regular.ttf +Allura-Regular.ttf +Almarai-Bold.ttf +Almarai-ExtraBold.ttf +Almarai-Light.ttf +Almarai-Regular.ttf +Almendra-Bold.ttf +Almendra-BoldItalic.ttf +Almendra-Italic.ttf +Almendra-Regular.ttf +AlmendraDisplay-Regular.ttf +AlmendraSC-Regular.ttf +AlumniSans-Italic[wght].ttf +AlumniSansCollegiateOne-Italic.ttf +AlumniSansCollegiateOne-Regular.ttf +AlumniSansInlineOne-Italic.ttf +AlumniSansInlineOne-Regular.ttf +AlumniSansPinstripe-Italic.ttf +AlumniSansPinstripe-Regular.ttf +AlumniSans[wght].ttf +Amarante-Regular.ttf +Amaranth-Bold.ttf +Amaranth-BoldItalic.ttf +Amaranth-Italic.ttf +Amaranth-Regular.ttf +AmaticSC-Bold.ttf +AmaticSC-Regular.ttf +Amethysta-Regular.ttf +Amiko-Bold.ttf +Amiko-Regular.ttf +Amiko-SemiBold.ttf +Amiri-Bold.ttf +Amiri-BoldItalic.ttf +Amiri-Italic.ttf +Amiri-Regular.ttf +AmiriQuran-Regular.ttf +AmiriQuranColored-Regular.ttf +Amita-Bold.ttf +Amita-Regular.ttf +AmstelvarAlpha-VF.ttf +Anaheim-Regular.ttf +AndadaPro-Italic[wght].ttf +AndadaPro[wght].ttf +Andika-Bold.ttf +Andika-BoldItalic.ttf +Andika-Italic.ttf +Andika-Regular.ttf +AnekBangla[wdth,wght].ttf +AnekDevanagari[wdth,wght].ttf +AnekGujarati[wdth,wght].ttf +AnekGurmukhi[wdth,wght].ttf +AnekKannada[wdth,wght].ttf +AnekLatin[wdth,wght].ttf +AnekMalayalam[wdth,wght].ttf +AnekOdia[wdth,wght].ttf +AnekTamil[wdth,wght].ttf +AnekTelugu[wdth,wght].ttf +Angkor-Regular.ttf +AnnieUseYourTelescope-Regular.ttf +AnonymousPro-Bold.ttf +AnonymousPro-BoldItalic.ttf +AnonymousPro-Italic.ttf +AnonymousPro-Regular.ttf +Antic-Regular.ttf +AnticDidone-Regular.ttf +AnticSlab-Regular.ttf +Anton-Regular.ttf +Antonio[wght].ttf +Anuphan[wght].ttf +Anybody-Italic[wdth,wght].ttf +Anybody[wdth,wght].ttf +AoboshiOne-Regular.ttf +Arapey-Italic.ttf +Arapey-Regular.ttf +Arbutus-Regular.ttf +ArbutusSlab-Regular.ttf +ArchitectsDaughter-Regular.ttf +Archivo-Italic[wdth,wght].ttf +ArchivoBlack-Regular.ttf +ArchivoNarrow-Italic[wght].ttf +ArchivoNarrow[wght].ttf +Archivo[wdth,wght].ttf +AreYouSerious-Regular.ttf +ArefRuqaa-Bold.ttf +ArefRuqaa-Regular.ttf +ArefRuqaaInk-Bold.ttf +ArefRuqaaInk-Regular.ttf +Arima[wght].ttf +Arimo-Italic[wght].ttf +Arimo[wght].ttf +Arizonia-Regular.ttf +Armata-Regular.ttf +Arsenal-Bold.ttf +Arsenal-BoldItalic.ttf +Arsenal-Italic.ttf +Arsenal-Regular.ttf +Artifika-Regular.ttf +Arvo-Bold.ttf +Arvo-BoldItalic.ttf +Arvo-Italic.ttf +Arvo-Regular.ttf +Arya-Bold.ttf +Arya-Regular.ttf +Asap-Italic[wdth,wght].ttf +AsapCondensed-Black.ttf +AsapCondensed-BlackItalic.ttf +AsapCondensed-Bold.ttf +AsapCondensed-BoldItalic.ttf +AsapCondensed-ExtraBold.ttf +AsapCondensed-ExtraBoldItalic.ttf +AsapCondensed-ExtraLight.ttf +AsapCondensed-ExtraLightItalic.ttf +AsapCondensed-Italic.ttf +AsapCondensed-Light.ttf +AsapCondensed-LightItalic.ttf +AsapCondensed-Medium.ttf +AsapCondensed-MediumItalic.ttf +AsapCondensed-Regular.ttf +AsapCondensed-SemiBold.ttf +AsapCondensed-SemiBoldItalic.ttf +AsapVFBeta-Condensed.ttf +AsapVFBeta-Italic.ttf +AsapVFBeta.ttf +Asap[wdth,wght].ttf +Asar-Regular.ttf +Asset-Regular.ttf +Assistant[wght].ttf +Astloch-Bold.ttf +Astloch-Regular.ttf +Asul-Bold.ttf +Asul-Regular.ttf +Athiti-Bold.ttf +Athiti-ExtraLight.ttf +Athiti-Light.ttf +Athiti-Medium.ttf +Athiti-Regular.ttf +Athiti-SemiBold.ttf +AtkinsonHyperlegible-Bold.ttf +AtkinsonHyperlegible-BoldItalic.ttf +AtkinsonHyperlegible-Italic.ttf +AtkinsonHyperlegible-Regular.ttf +Atma-Bold.ttf +Atma-Light.ttf +Atma-Medium.ttf +Atma-Regular.ttf +Atma-SemiBold.ttf +AtomicAge-Regular.ttf +Aubrey-Regular.ttf +Audiowide-Regular.ttf +AutourOne-Regular.ttf +Average-Regular.ttf +AverageSans-Regular.ttf +AveriaGruesaLibre-Regular.ttf +AveriaLibre-Bold.ttf +AveriaLibre-BoldItalic.ttf +AveriaLibre-Italic.ttf +AveriaLibre-Light.ttf +AveriaLibre-LightItalic.ttf +AveriaLibre-Regular.ttf +AveriaSansLibre-Bold.ttf +AveriaSansLibre-BoldItalic.ttf +AveriaSansLibre-Italic.ttf +AveriaSansLibre-Light.ttf +AveriaSansLibre-LightItalic.ttf +AveriaSansLibre-Regular.ttf +AveriaSerifLibre-Bold.ttf +AveriaSerifLibre-BoldItalic.ttf +AveriaSerifLibre-Italic.ttf +AveriaSerifLibre-Light.ttf +AveriaSerifLibre-LightItalic.ttf +AveriaSerifLibre-Regular.ttf +AzeretMono-Italic[wght].ttf +AzeretMono[wght].ttf +B612-Bold.ttf +B612-BoldItalic.ttf +B612-Italic.ttf +B612-Regular.ttf +B612Mono-Bold.ttf +B612Mono-BoldItalic.ttf +B612Mono-Italic.ttf +B612Mono-Regular.ttf +BIZUDGothic-Bold.ttf +BIZUDGothic-Regular.ttf +BIZUDMincho-Bold.ttf +BIZUDMincho-Regular.ttf +BIZUDPGothic-Bold.ttf +BIZUDPGothic-Regular.ttf +BIZUDPMincho-Bold.ttf +BIZUDPMincho-Regular.ttf +BM-HANNA.ttf +Babylonica-Regular.ttf +BadScript-Regular.ttf +Bahiana-Regular.ttf +Bahianita-Regular.ttf +BaiJamjuree-Bold.ttf +BaiJamjuree-BoldItalic.ttf +BaiJamjuree-ExtraLight.ttf +BaiJamjuree-ExtraLightItalic.ttf +BaiJamjuree-Italic.ttf +BaiJamjuree-Light.ttf +BaiJamjuree-LightItalic.ttf +BaiJamjuree-Medium.ttf +BaiJamjuree-MediumItalic.ttf +BaiJamjuree-Regular.ttf +BaiJamjuree-SemiBold.ttf +BaiJamjuree-SemiBoldItalic.ttf +BakbakOne-Regular.ttf +Ballet[opsz].ttf +Baloo2[wght].ttf +BalooBhai2[wght].ttf +BalooBhaijaan2[wght].ttf +BalooBhaina2[wght].ttf +BalooChettan2[wght].ttf +BalooDa2[wght].ttf +BalooPaaji2[wght].ttf +BalooTamma2[wght].ttf +BalooTammudu2[wght].ttf +BalooThambi2[wght].ttf +BalsamiqSans-Bold.ttf +BalsamiqSans-BoldItalic.ttf +BalsamiqSans-Italic.ttf +BalsamiqSans-Regular.ttf +Balthazar-Regular.ttf +Bangers-Regular.ttf +Barlow-Black.ttf +Barlow-BlackItalic.ttf +Barlow-Bold.ttf +Barlow-BoldItalic.ttf +Barlow-ExtraBold.ttf +Barlow-ExtraBoldItalic.ttf +Barlow-ExtraLight.ttf +Barlow-ExtraLightItalic.ttf +Barlow-Italic.ttf +Barlow-Light.ttf +Barlow-LightItalic.ttf +Barlow-Medium.ttf +Barlow-MediumItalic.ttf +Barlow-Regular.ttf +Barlow-SemiBold.ttf +Barlow-SemiBoldItalic.ttf +Barlow-Thin.ttf +Barlow-ThinItalic.ttf +BarlowCondensed-Black.ttf +BarlowCondensed-BlackItalic.ttf +BarlowCondensed-Bold.ttf +BarlowCondensed-BoldItalic.ttf +BarlowCondensed-ExtraBold.ttf +BarlowCondensed-ExtraBoldItalic.ttf +BarlowCondensed-ExtraLight.ttf +BarlowCondensed-ExtraLightItalic.ttf +BarlowCondensed-Italic.ttf +BarlowCondensed-Light.ttf +BarlowCondensed-LightItalic.ttf +BarlowCondensed-Medium.ttf +BarlowCondensed-MediumItalic.ttf +BarlowCondensed-Regular.ttf +BarlowCondensed-SemiBold.ttf +BarlowCondensed-SemiBoldItalic.ttf +BarlowCondensed-Thin.ttf +BarlowCondensed-ThinItalic.ttf +BarlowSemiCondensed-Black.ttf +BarlowSemiCondensed-BlackItalic.ttf +BarlowSemiCondensed-Bold.ttf +BarlowSemiCondensed-BoldItalic.ttf +BarlowSemiCondensed-ExtraBold.ttf +BarlowSemiCondensed-ExtraBoldItalic.ttf +BarlowSemiCondensed-ExtraLight.ttf +BarlowSemiCondensed-ExtraLightItalic.ttf +BarlowSemiCondensed-Italic.ttf +BarlowSemiCondensed-Light.ttf +BarlowSemiCondensed-LightItalic.ttf +BarlowSemiCondensed-Medium.ttf +BarlowSemiCondensed-MediumItalic.ttf +BarlowSemiCondensed-Regular.ttf +BarlowSemiCondensed-SemiBold.ttf +BarlowSemiCondensed-SemiBoldItalic.ttf +BarlowSemiCondensed-Thin.ttf +BarlowSemiCondensed-ThinItalic.ttf +Barriecito-Regular.ttf +Barrio-Regular.ttf +Basic-Regular.ttf +Baskervville-Italic.ttf +Baskervville-Regular.ttf +Battambang-Black.ttf +Battambang-Bold.ttf +Battambang-Light.ttf +Battambang-Regular.ttf +Battambang-Thin.ttf +Baumans-Regular.ttf +Bayon-Regular.ttf +BeVietnamPro-Black.ttf +BeVietnamPro-BlackItalic.ttf +BeVietnamPro-Bold.ttf +BeVietnamPro-BoldItalic.ttf +BeVietnamPro-ExtraBold.ttf +BeVietnamPro-ExtraBoldItalic.ttf +BeVietnamPro-ExtraLight.ttf +BeVietnamPro-ExtraLightItalic.ttf +BeVietnamPro-Italic.ttf +BeVietnamPro-Light.ttf +BeVietnamPro-LightItalic.ttf +BeVietnamPro-Medium.ttf +BeVietnamPro-MediumItalic.ttf +BeVietnamPro-Regular.ttf +BeVietnamPro-SemiBold.ttf +BeVietnamPro-SemiBoldItalic.ttf +BeVietnamPro-Thin.ttf +BeVietnamPro-ThinItalic.ttf +BeauRivage-Regular.ttf +BebasNeue-Regular.ttf +Belgrano-Regular.ttf +Bellefair-Regular.ttf +Belleza-Regular.ttf +Bellota-Bold.ttf +Bellota-BoldItalic.ttf +Bellota-Italic.ttf +Bellota-Light.ttf +Bellota-LightItalic.ttf +Bellota-Regular.ttf +BellotaText-Bold.ttf +BellotaText-BoldItalic.ttf +BellotaText-Italic.ttf +BellotaText-Light.ttf +BellotaText-LightItalic.ttf +BellotaText-Regular.ttf +BenchNine-Bold.ttf +BenchNine-Light.ttf +BenchNine-Regular.ttf +Benne-Regular.ttf +Bentham-Regular.ttf +BerkshireSwash-Regular.ttf +Besley-Italic[wght].ttf +Besley[wght].ttf +BethEllen-Regular.ttf +Bevan-Italic.ttf +Bevan-Regular.ttf +Bhavuka-Regular.ttf +BhuTukaExpandedOne-Regular.ttf +BigShouldersDisplay[wght].ttf +BigShouldersInlineDisplay[wght].ttf +BigShouldersInlineText[wght].ttf +BigShouldersStencilDisplay[wght].ttf +BigShouldersStencilText[wght].ttf +BigShouldersText[wght].ttf +BigelowRules-Regular.ttf +BigshotOne-Regular.ttf +Bilbo-Regular.ttf +BilboSwashCaps-Regular.ttf +BioRhyme-Bold.ttf +BioRhyme-ExtraBold.ttf +BioRhyme-ExtraLight.ttf +BioRhyme-Light.ttf +BioRhyme-Regular.ttf +BioRhymeExpanded-Bold.ttf +BioRhymeExpanded-ExtraBold.ttf +BioRhymeExpanded-ExtraLight.ttf +BioRhymeExpanded-Light.ttf +BioRhymeExpanded-Regular.ttf +Birthstone-Regular.ttf +BirthstoneBounce-Medium.ttf +BirthstoneBounce-Regular.ttf +Biryani-Black.ttf +Biryani-Bold.ttf +Biryani-ExtraBold.ttf +Biryani-ExtraLight.ttf +Biryani-Light.ttf +Biryani-Regular.ttf +Biryani-SemiBold.ttf +Bitter-Italic[wght].ttf +Bitter[wght].ttf +BlackAndWhitePicture-Regular.ttf +BlackHanSans-Regular.ttf +BlackOpsOne-Regular.ttf +Blaka-Regular.ttf +BlakaHollow-Regular.ttf +BlakaInk-Regular.ttf +Blinker-Black.ttf +Blinker-Bold.ttf +Blinker-ExtraBold.ttf +Blinker-ExtraLight.ttf +Blinker-Light.ttf +Blinker-Regular.ttf +Blinker-SemiBold.ttf +Blinker-Thin.ttf +BodoniModa-Italic[opsz,wght].ttf +BodoniModa[opsz,wght].ttf +Bokor-Regular.ttf +BonaNova-Bold.ttf +BonaNova-Italic.ttf +BonaNova-Regular.ttf +Bonbon-Regular.ttf +BonheurRoyale-Regular.ttf +Boogaloo-Regular.ttf +BowlbyOne-Regular.ttf +BowlbyOneSC-Regular.ttf +BraahOne-Regular.ttf +Brawler-Bold.ttf +Brawler-Regular.ttf +BreeSerif-Regular.ttf +BrunoAce-Regular.ttf +BrunoAceSC-Regular.ttf +Brygada1918-Italic[wght].ttf +Brygada1918[wght].ttf +BubblegumSans-Regular.ttf +BubblerOne-Regular.ttf +Buda-Light.ttf +Buenard-Bold.ttf +Buenard-Regular.ttf +Bungee-Regular.ttf +BungeeColor-Regular.ttf +BungeeHairline-Regular.ttf +BungeeInline-Regular.ttf +BungeeOutline-Regular.ttf +BungeeShade-Regular.ttf +BungeeSpice-Regular.ttf +Butcherman-Regular.ttf +ButterflyKids-Regular.ttf +C059-BdIta.otf +C059-BdIta.t1 +C059-Bold.otf +C059-Bold.t1 +C059-Italic.otf +C059-Italic.t1 +C059-Roman.otf +C059-Roman.t1 +Cabin-Italic[wdth,wght].ttf +CabinCondensed-Bold.ttf +CabinCondensed-Medium.ttf +CabinCondensed-Regular.ttf +CabinCondensed-SemiBold.ttf +CabinSketch-Bold.ttf +CabinSketch-Regular.ttf +Cabin[wdth,wght].ttf +CaesarDressing-Regular.ttf +Cagliostro-Regular.ttf +CairoPlay[slnt,wght].ttf +Cairo[slnt,wght].ttf +Caladea-Bold.ttf +Caladea-BoldItalic.ttf +Caladea-Italic.ttf +Caladea-Regular.ttf +Calistoga-Regular.ttf +Calligraffitti-Regular.ttf +Cambay-Bold.ttf +Cambay-BoldItalic.ttf +Cambay-Italic.ttf +Cambay-Regular.ttf +Cambo-Regular.ttf +Candal.ttf +Cantarell-Bold.otf +Cantarell-Bold.ttf +Cantarell-BoldItalic.ttf +Cantarell-ExtraBold.otf +Cantarell-Italic.ttf +Cantarell-Light.otf +Cantarell-Regular.otf +Cantarell-Regular.ttf +Cantarell-Thin.otf +CantataOne-Regular.ttf +CantoraOne-Regular.ttf +Capriola-Regular.ttf +Caramel-Regular.ttf +Carattere-Regular.ttf +Cardo-Bold.ttf +Cardo-Italic.ttf +Cardo-Regular.ttf +Carlito-Bold.ttf +Carlito-BoldItalic.ttf +Carlito-Italic.ttf +Carlito-Regular.ttf +Carme-Regular.ttf +CarroisGothic-Regular.ttf +CarroisGothicSC-Regular.ttf +CarterOne.ttf +Castoro-Italic.ttf +Castoro-Regular.ttf +CastoroTitling-Regular.ttf +Catamaran[wght].ttf +Caudex-Bold.ttf +Caudex-BoldItalic.ttf +Caudex-Italic.ttf +Caudex-Regular.ttf +CaveatBrush-Regular.ttf +Caveat[wght].ttf +Cedarville-Cursive.ttf +CevicheOne-Regular.ttf +ChakraPetch-Bold.ttf +ChakraPetch-BoldItalic.ttf +ChakraPetch-ExtraLight.ttf +ChakraPetch-ExtraLightItalic.ttf +ChakraPetch-Italic.ttf +ChakraPetch-Light.ttf +ChakraPetch-LightItalic.ttf +ChakraPetch-Medium.ttf +ChakraPetch-MediumItalic.ttf +ChakraPetch-Regular.ttf +ChakraPetch-SemiBold.ttf +ChakraPetch-SemiBoldItalic.ttf +ChangaOne-Italic.ttf +ChangaOne-Regular.ttf +Changa[wght].ttf +Chango-Regular.ttf +CharisSIL-Bold.ttf +CharisSIL-BoldItalic.ttf +CharisSIL-Italic.ttf +CharisSIL-Regular.ttf +Charm-Bold.ttf +Charm-Regular.ttf +Charmonman-Bold.ttf +Charmonman-Regular.ttf +Chathura-Bold.ttf +Chathura-ExtraBold.ttf +Chathura-Light.ttf +Chathura-Regular.ttf +Chathura-Thin.ttf +ChauPhilomeneOne-Italic.ttf +ChauPhilomeneOne-Regular.ttf +ChelaOne-Regular.ttf +ChelseaMarket-Regular.ttf +Chenla.ttf +Cherish-Regular.ttf +CherryBombOne-Regular.ttf +CherryCreamSoda-Regular.ttf +CherrySwash-Bold.ttf +CherrySwash-Regular.ttf +Chewy-Regular.ttf +Chicle-Regular.ttf +Chilanka-Regular.ttf +Chivo-Italic[wght].ttf +ChivoMono-Italic[wght].ttf +ChivoMono[wght].ttf +Chivo[wght].ttf +Chokokutai-Regular.ttf +Chonburi-Regular.ttf +CinzelDecorative-Black.ttf +CinzelDecorative-Bold.ttf +CinzelDecorative-Regular.ttf +Cinzel[wght].ttf +ClickerScript-Regular.ttf +ClimateCrisis[YEAR].ttf +Coda-ExtraBold.ttf +Coda-Regular.ttf +Codystar-Light.ttf +Codystar-Regular.ttf +Coiny-Regular.ttf +Combo-Regular.ttf +Comfortaa[wght].ttf +Comforter-Regular.ttf +ComforterBrush-Regular.ttf +ComicNeue-Bold.ttf +ComicNeue-BoldItalic.ttf +ComicNeue-Italic.ttf +ComicNeue-Light.ttf +ComicNeue-LightItalic.ttf +ComicNeue-Regular.ttf +ComingSoon-Regular.ttf +Comme[wght].ttf +Commissioner[FLAR,VOLM,slnt,wght].ttf +ConcertOne-Regular.ttf +Condiment-Regular.ttf +Content-Bold.ttf +Content-Regular.ttf +ContrailOne-Regular.ttf +Convergence-Regular.ttf +Cookie-Regular.ttf +Copse-Regular.ttf +Corben-Bold.ttf +Corben-Regular.ttf +Corinthia-Bold.ttf +Corinthia-Regular.ttf +Cormorant-Italic[wght].ttf +CormorantGaramond-Bold.ttf +CormorantGaramond-BoldItalic.ttf +CormorantGaramond-Italic.ttf +CormorantGaramond-Light.ttf +CormorantGaramond-LightItalic.ttf +CormorantGaramond-Medium.ttf +CormorantGaramond-MediumItalic.ttf +CormorantGaramond-Regular.ttf +CormorantGaramond-SemiBold.ttf +CormorantGaramond-SemiBoldItalic.ttf +CormorantInfant-Bold.ttf +CormorantInfant-BoldItalic.ttf +CormorantInfant-Italic.ttf +CormorantInfant-Light.ttf +CormorantInfant-LightItalic.ttf +CormorantInfant-Medium.ttf +CormorantInfant-MediumItalic.ttf +CormorantInfant-Regular.ttf +CormorantInfant-SemiBold.ttf +CormorantInfant-SemiBoldItalic.ttf +CormorantSC-Bold.ttf +CormorantSC-Light.ttf +CormorantSC-Medium.ttf +CormorantSC-Regular.ttf +CormorantSC-SemiBold.ttf +CormorantUnicase-Bold.ttf +CormorantUnicase-Light.ttf +CormorantUnicase-Medium.ttf +CormorantUnicase-Regular.ttf +CormorantUnicase-SemiBold.ttf +CormorantUpright-Bold.ttf +CormorantUpright-Light.ttf +CormorantUpright-Medium.ttf +CormorantUpright-Regular.ttf +CormorantUpright-SemiBold.ttf +Cormorant[wght].ttf +Courgette-Regular.ttf +CourierPrime-Bold.ttf +CourierPrime-BoldItalic.ttf +CourierPrime-Italic.ttf +CourierPrime-Regular.ttf +Cousine-Bold.ttf +Cousine-BoldItalic.ttf +Cousine-Italic.ttf +Cousine-Regular.ttf +Coustard-Black.ttf +Coustard-Regular.ttf +CoveredByYourGrace.ttf +CraftyGirls-Regular.ttf +Creepster-Regular.ttf +CreepsterCaps-Regular.ttf +CreteRound-Italic.ttf +CreteRound-Regular.ttf +CrimsonPro-Italic[wght].ttf +CrimsonPro[wght].ttf +CrimsonText-Bold.ttf +CrimsonText-BoldItalic.ttf +CrimsonText-Italic.ttf +CrimsonText-Regular.ttf +CrimsonText-SemiBold.ttf +CrimsonText-SemiBoldItalic.ttf +CroissantOne-Regular.ttf +Crushed-Regular.ttf +Cuprum-Italic[wght].ttf +Cuprum[wght].ttf +CuteFont-Regular.ttf +Cutive-Regular.ttf +CutiveMono-Regular.ttf +D050000L.otf +D050000L.t1 +DMMono-Italic.ttf +DMMono-Light.ttf +DMMono-LightItalic.ttf +DMMono-Medium.ttf +DMMono-MediumItalic.ttf +DMMono-Regular.ttf +DMSans-Bold.ttf +DMSans-BoldItalic.ttf +DMSans-Italic.ttf +DMSans-Medium.ttf +DMSans-MediumItalic.ttf +DMSans-Regular.ttf +DMSerifDisplay-Italic.ttf +DMSerifDisplay-Regular.ttf +DMSerifText-Italic.ttf +DMSerifText-Regular.ttf +Damion-Regular.ttf +DancingScript[wght].ttf +Dangrek-Regular.ttf +DarkerGrotesque[wght].ttf +DarumadropOne-Regular.ttf +DavidLibre-Bold.ttf +DavidLibre-Medium.ttf +DavidLibre-Regular.ttf +DawningofaNewDay.ttf +DaysOne-Regular.ttf +DecovarAlpha-VF.ttf +DejaVuMathTeXGyre.ttf +DejaVuSans-Bold.ttf +DejaVuSans-BoldOblique.ttf +DejaVuSans-ExtraLight.ttf +DejaVuSans-Oblique.ttf +DejaVuSans.ttf +DejaVuSansCondensed-Bold.ttf +DejaVuSansCondensed-BoldOblique.ttf +DejaVuSansCondensed-Oblique.ttf +DejaVuSansCondensed.ttf +DejaVuSansMono-Bold.ttf +DejaVuSansMono-BoldOblique.ttf +DejaVuSansMono-Oblique.ttf +DejaVuSansMono.ttf +DejaVuSerif-Bold.ttf +DejaVuSerif-BoldItalic.ttf +DejaVuSerif-Italic.ttf +DejaVuSerif.ttf +DejaVuSerifCondensed-Bold.ttf +DejaVuSerifCondensed-BoldItalic.ttf +DejaVuSerifCondensed-Italic.ttf +DejaVuSerifCondensed.ttf +Dekko-Regular.ttf +DelaGothicOne-Regular.ttf +DeliciousHandrawn-Regular.ttf +Delius-Regular.ttf +DeliusSwashCaps-Regular.ttf +DeliusUnicase-Bold.ttf +DeliusUnicase-Regular.ttf +DellaRespira-Regular.ttf +DenkOne-Regular.ttf +Devonshire-Regular.ttf +Dhurjati-Regular.ttf +Dhyana-Bold.ttf +Dhyana-Regular.ttf +DidactGothic-Regular.ttf +DigitalNumbers-Regular.ttf +Diplomata-Regular.ttf +DiplomataSC-Regular.ttf +DoHyeon-Regular.ttf +Dokdo-Regular.ttf +Domine[wght].ttf +DonegalOne-Regular.ttf +Dongle-Bold.ttf +Dongle-Light.ttf +Dongle-Regular.ttf +DoppioOne-Regular.ttf +Dorsa-Regular.ttf +Dosis[wght].ttf +DotGothic16-Regular.ttf +DrSugiyama-Regular.ttf +DroidSansFallbackFull.ttf +DuruSans-Regular.ttf +DynaPuff[wdth,wght].ttf +Dynalight-Regular.ttf +EBGaramond-Italic[wght].ttf +EBGaramond[wght].ttf +EagleLake-Regular.ttf +EastSeaDokdo-Regular.ttf +Eater-Regular.ttf +Economica-Bold.ttf +Economica-BoldItalic.ttf +Economica-Italic.ttf +Economica-Regular.ttf +Eczar[wght].ttf +EduNSWACTFoundation[wght].ttf +EduQLDBeginner[wght].ttf +EduSABeginner[wght].ttf +EduTASBeginner[wght].ttf +EduVICWANTBeginner[wght].ttf +EkMukta-Bold.ttf +EkMukta-ExtraBold.ttf +EkMukta-ExtraLight.ttf +EkMukta-Light.ttf +EkMukta-Medium.ttf +EkMukta-Regular.ttf +EkMukta-SemiBold.ttf +ElMessiri[wght].ttf +Electrolize-Regular.ttf +Elsie-Black.ttf +Elsie-Regular.ttf +ElsieSwashCaps-Black.ttf +ElsieSwashCaps-Regular.ttf +EmblemaOne-Regular.ttf +EmilysCandy-Regular.ttf +EncodeSansCondensed-Black.ttf +EncodeSansCondensed-Bold.ttf +EncodeSansCondensed-ExtraBold.ttf +EncodeSansCondensed-ExtraLight.ttf +EncodeSansCondensed-Light.ttf +EncodeSansCondensed-Medium.ttf +EncodeSansCondensed-Regular.ttf +EncodeSansCondensed-SemiBold.ttf +EncodeSansCondensed-Thin.ttf +EncodeSansExpanded-Black.ttf +EncodeSansExpanded-Bold.ttf +EncodeSansExpanded-ExtraBold.ttf +EncodeSansExpanded-ExtraLight.ttf +EncodeSansExpanded-Light.ttf +EncodeSansExpanded-Medium.ttf +EncodeSansExpanded-Regular.ttf +EncodeSansExpanded-SemiBold.ttf +EncodeSansExpanded-Thin.ttf +EncodeSansSC[wdth,wght].ttf +EncodeSansSemiCondensed-Black.ttf +EncodeSansSemiCondensed-Bold.ttf +EncodeSansSemiCondensed-ExtraBold.ttf +EncodeSansSemiCondensed-ExtraLight.ttf +EncodeSansSemiCondensed-Light.ttf +EncodeSansSemiCondensed-Medium.ttf +EncodeSansSemiCondensed-Regular.ttf +EncodeSansSemiCondensed-SemiBold.ttf +EncodeSansSemiCondensed-Thin.ttf +EncodeSansSemiExpanded-Black.ttf +EncodeSansSemiExpanded-Bold.ttf +EncodeSansSemiExpanded-ExtraBold.ttf +EncodeSansSemiExpanded-ExtraLight.ttf +EncodeSansSemiExpanded-Light.ttf +EncodeSansSemiExpanded-Medium.ttf +EncodeSansSemiExpanded-Regular.ttf +EncodeSansSemiExpanded-SemiBold.ttf +EncodeSansSemiExpanded-Thin.ttf +EncodeSans[wdth,wght].ttf +Engagement-Regular.ttf +Englebert-Regular.ttf +Enriqueta-Bold.ttf +Enriqueta-Medium.ttf +Enriqueta-Regular.ttf +Enriqueta-SemiBold.ttf +Ephesis-Regular.ttf +Epilogue-Italic[wght].ttf +Epilogue[wght].ttf +EricaOne-Regular.ttf +Esteban-Regular.ttf +Estonia-Regular.ttf +EuphoriaScript-Regular.ttf +Ewert-Regular.ttf +Exo-Italic[wght].ttf +Exo2-Italic[wght].ttf +Exo2[wght].ttf +Exo[wght].ttf +ExpletusSans-Italic[wght].ttf +ExpletusSans[wght].ttf +Explora-Regular.ttf +Fahkwang-Bold.ttf +Fahkwang-BoldItalic.ttf +Fahkwang-ExtraLight.ttf +Fahkwang-ExtraLightItalic.ttf +Fahkwang-Italic.ttf +Fahkwang-Light.ttf +Fahkwang-LightItalic.ttf +Fahkwang-Medium.ttf +Fahkwang-MediumItalic.ttf +Fahkwang-Regular.ttf +Fahkwang-SemiBold.ttf +Fahkwang-SemiBoldItalic.ttf +FamiljenGrotesk-Italic[wght].ttf +FamiljenGrotesk[wght].ttf +FanwoodText-Italic.ttf +FanwoodText-Regular.ttf +Farro-Bold.ttf +Farro-Light.ttf +Farro-Medium.ttf +Farro-Regular.ttf +Farsan-Regular.ttf +Fascinate-Regular.ttf +FascinateInline-Regular.ttf +FasterOne-Regular.ttf +Fasthand-Regular.ttf +FaunaOne-Regular.ttf +Faustina-Italic[wght].ttf +Faustina[wght].ttf +Federant-Regular.ttf +Federo-Regular.ttf +Felipa-Regular.ttf +Fenix-Regular.ttf +Festive-Regular.ttf +Figtree-Italic[wght].ttf +Figtree[wght].ttf +FingerPaint-Regular.ttf +Finlandica-Italic[wght].ttf +Finlandica[wght].ttf +FiraCode[wght].ttf +FiraMono-Bold.ttf +FiraMono-Medium.ttf +FiraMono-Regular.ttf +FiraSans-Black.ttf +FiraSans-BlackItalic.ttf +FiraSans-Bold.ttf +FiraSans-BoldItalic.ttf +FiraSans-ExtraBold.ttf +FiraSans-ExtraBoldItalic.ttf +FiraSans-ExtraLight.ttf +FiraSans-ExtraLightItalic.ttf +FiraSans-Italic.ttf +FiraSans-Light.ttf +FiraSans-LightItalic.ttf +FiraSans-Medium.ttf +FiraSans-MediumItalic.ttf +FiraSans-Regular.ttf +FiraSans-SemiBold.ttf +FiraSans-SemiBoldItalic.ttf +FiraSans-Thin.ttf +FiraSans-ThinItalic.ttf +FiraSansCondensed-Black.ttf +FiraSansCondensed-BlackItalic.ttf +FiraSansCondensed-Bold.ttf +FiraSansCondensed-BoldItalic.ttf +FiraSansCondensed-ExtraBold.ttf +FiraSansCondensed-ExtraBoldItalic.ttf +FiraSansCondensed-ExtraLight.ttf +FiraSansCondensed-ExtraLightItalic.ttf +FiraSansCondensed-Italic.ttf +FiraSansCondensed-Light.ttf +FiraSansCondensed-LightItalic.ttf +FiraSansCondensed-Medium.ttf +FiraSansCondensed-MediumItalic.ttf +FiraSansCondensed-Regular.ttf +FiraSansCondensed-SemiBold.ttf +FiraSansCondensed-SemiBoldItalic.ttf +FiraSansCondensed-Thin.ttf +FiraSansCondensed-ThinItalic.ttf +FiraSansExtraCondensed-Black.ttf +FiraSansExtraCondensed-BlackItalic.ttf +FiraSansExtraCondensed-Bold.ttf +FiraSansExtraCondensed-BoldItalic.ttf +FiraSansExtraCondensed-ExtraBold.ttf +FiraSansExtraCondensed-ExtraBoldItalic.ttf +FiraSansExtraCondensed-ExtraLight.ttf +FiraSansExtraCondensed-ExtraLightItalic.ttf +FiraSansExtraCondensed-Italic.ttf +FiraSansExtraCondensed-Light.ttf +FiraSansExtraCondensed-LightItalic.ttf +FiraSansExtraCondensed-Medium.ttf +FiraSansExtraCondensed-MediumItalic.ttf +FiraSansExtraCondensed-Regular.ttf +FiraSansExtraCondensed-SemiBold.ttf +FiraSansExtraCondensed-SemiBoldItalic.ttf +FiraSansExtraCondensed-Thin.ttf +FiraSansExtraCondensed-ThinItalic.ttf +FjallaOne-Regular.ttf +FjordOne-Regular.ttf +Flamenco-Light.ttf +Flamenco-Regular.ttf +Flavors-Regular.ttf +FleurDeLeah-Regular.ttf +FlowBlock-Regular.ttf +FlowCircular-Regular.ttf +FlowRounded-Regular.ttf +Foldit[wght].ttf +Fondamento-Italic.ttf +Fondamento-Regular.ttf +FontdinerSwanky-Regular.ttf +Forum-Regular.ttf +FragmentMono-Italic.ttf +FragmentMono-Regular.ttf +FrancoisOne-Regular.ttf +FrankRuhlLibre[wght].ttf +Fraunces-Italic[SOFT,WONK,opsz,wght].ttf +Fraunces[SOFT,WONK,opsz,wght].ttf +FreckleFace-Regular.ttf +FrederickatheGreat-Regular.ttf +Fredoka[wdth,wght].ttf +Freehand-Regular.ttf +Fresca-Regular.ttf +Frijole-Regular.ttf +Fruktur-Italic.ttf +Fruktur-Regular.ttf +FugazOne-Regular.ttf +Fuggles-Regular.ttf +FuzzyBubbles-Bold.ttf +FuzzyBubbles-Regular.ttf +GFSDidot-Regular.ttf +GFSNeohellenic.ttf +GFSNeohellenicBold.ttf +GFSNeohellenicBoldItalic.ttf +GFSNeohellenicItalic.ttf +Gabriela-Regular.ttf +Gaegu-Bold.ttf +Gaegu-Light.ttf +Gaegu-Regular.ttf +Gafata-Regular.ttf +GajrajOne-Regular.ttf +Galada-Regular.ttf +Galdeano-Regular.ttf +Galindo-Regular.ttf +GamjaFlower-Regular.ttf +Gantari-Italic[wght].ttf +Gantari[wght].ttf +Gayathri-Bold.ttf +Gayathri-Regular.ttf +Gayathri-Thin.ttf +Gelasio-Bold.ttf +Gelasio-BoldItalic.ttf +Gelasio-Italic.ttf +Gelasio-Medium.ttf +Gelasio-MediumItalic.ttf +Gelasio-Regular.ttf +Gelasio-SemiBold.ttf +Gelasio-SemiBoldItalic.ttf +GemunuLibre[wght].ttf +Genos-Italic[wght].ttf +Genos[wght].ttf +GentiumBookPlus-Bold.ttf +GentiumBookPlus-BoldItalic.ttf +GentiumBookPlus-Italic.ttf +GentiumBookPlus-Regular.ttf +GentiumPlus-Bold.ttf +GentiumPlus-BoldItalic.ttf +GentiumPlus-Italic.ttf +GentiumPlus-Regular.ttf +Geo-Oblique.ttf +Geo-Regular.ttf +Geologica[CRSV,SHRP,slnt,wght].ttf +Georama-Italic[wdth,wght].ttf +Georama[wdth,wght].ttf +Geostar-Regular.ttf +GeostarFill-Regular.ttf +GermaniaOne-Regular.ttf +GideonRoman-Regular.ttf +Gidugu-Regular.ttf +GildaDisplay-Regular.ttf +Girassol-Regular.ttf +GiveYouGlory.ttf +GlassAntiqua-Regular.ttf +Glegoo-Bold.ttf +Glegoo-Regular.ttf +Gloock-Regular.ttf +GloriaHallelujah.ttf +Glory-Italic[wght].ttf +Glory[wght].ttf +Gluten[slnt,wght].ttf +GoblinOne.ttf +GochiHand-Regular.ttf +Goldman-Bold.ttf +Goldman-Regular.ttf +GolosText[wght].ttf +Gorditas-Bold.ttf +Gorditas-Regular.ttf +GothicA1-Black.ttf +GothicA1-Bold.ttf +GothicA1-ExtraBold.ttf +GothicA1-ExtraLight.ttf +GothicA1-Light.ttf +GothicA1-Medium.ttf +GothicA1-Regular.ttf +GothicA1-SemiBold.ttf +GothicA1-Thin.ttf +Gotu-Regular.ttf +GoudyBookletter1911.ttf +GowunBatang-Bold.ttf +GowunBatang-Regular.ttf +GowunDodum-Regular.ttf +Graduate-Regular.ttf +GrandHotel-Regular.ttf +Grandstander-Italic[wght].ttf +Grandstander[wght].ttf +GrapeNuts-Regular.ttf +GravitasOne.ttf +GreatVibes-Regular.ttf +GrechenFuemen-Regular.ttf +Grenze-Black.ttf +Grenze-BlackItalic.ttf +Grenze-Bold.ttf +Grenze-BoldItalic.ttf +Grenze-ExtraBold.ttf +Grenze-ExtraBoldItalic.ttf +Grenze-ExtraLight.ttf +Grenze-ExtraLightItalic.ttf +Grenze-Italic.ttf +Grenze-Light.ttf +Grenze-LightItalic.ttf +Grenze-Medium.ttf +Grenze-MediumItalic.ttf +Grenze-Regular.ttf +Grenze-SemiBold.ttf +Grenze-SemiBoldItalic.ttf +Grenze-Thin.ttf +Grenze-ThinItalic.ttf +GrenzeGotisch[wght].ttf +GreyQo-Regular.ttf +Griffy-Regular.ttf +Gruppo-Regular.ttf +Gudea-Bold.ttf +Gudea-Italic.ttf +Gudea-Regular.ttf +Gugi-Regular.ttf +Gulzar-Regular.ttf +Gupter-Bold.ttf +Gupter-Medium.ttf +Gupter-Regular.ttf +Gurajada-Regular.ttf +Gwendolyn-Bold.ttf +Gwendolyn-Regular.ttf +Habibi-Regular.ttf +HachiMaruPop-Regular.ttf +Hahmlet[wght].ttf +Halant-Bold.ttf +Halant-Light.ttf +Halant-Medium.ttf +Halant-Regular.ttf +Halant-SemiBold.ttf +HammersmithOne-Regular.ttf +Hanalei-Regular.ttf +HanaleiFill-Regular.ttf +Handjet[ELGR,ELSH,wght].ttf +Handlee-Regular.ttf +HankenGrotesk-Italic[wght].ttf +HankenGrotesk[wght].ttf +Hannari-Regular.ttf +Hanuman-Black.ttf +Hanuman-Bold.ttf +Hanuman-Light.ttf +Hanuman-Regular.ttf +Hanuman-Thin.ttf +HappyMonkey-Regular.ttf +Harmattan-Bold.ttf +Harmattan-Medium.ttf +Harmattan-Regular.ttf +Harmattan-SemiBold.ttf +HeadlandOne-Regular.ttf +Heebo[wght].ttf +HennyPenny-Regular.ttf +HeptaSlab[wght].ttf +HermeneusOne-Regular.ttf +HerrVonMuellerhoff-Regular.ttf +HiMelody-Regular.ttf +HinaMincho-Regular.ttf +Hind-Bold.ttf +Hind-Light.ttf +Hind-Medium.ttf +Hind-Regular.ttf +Hind-SemiBold.ttf +HindColombo-Bold.ttf +HindColombo-Light.ttf +HindColombo-Medium.ttf +HindColombo-Regular.ttf +HindColombo-SemiBold.ttf +HindGuntur-Bold.ttf +HindGuntur-Light.ttf +HindGuntur-Medium.ttf +HindGuntur-Regular.ttf +HindGuntur-SemiBold.ttf +HindJalandhar-Bold.ttf +HindJalandhar-Light.ttf +HindJalandhar-Medium.ttf +HindJalandhar-Regular.ttf +HindJalandhar-SemiBold.ttf +HindKochi-Bold.ttf +HindKochi-Light.ttf +HindKochi-Medium.ttf +HindKochi-Regular.ttf +HindKochi-SemiBold.ttf +HindMadurai-Bold.ttf +HindMadurai-Light.ttf +HindMadurai-Medium.ttf +HindMadurai-Regular.ttf +HindMadurai-SemiBold.ttf +HindMysuru-Bold.ttf +HindMysuru-Light.ttf +HindMysuru-Medium.ttf +HindMysuru-Regular.ttf +HindMysuru-SemiBold.ttf +HindSiliguri-Bold.ttf +HindSiliguri-Light.ttf +HindSiliguri-Medium.ttf +HindSiliguri-Regular.ttf +HindSiliguri-SemiBold.ttf +HindVadodara-Bold.ttf +HindVadodara-Light.ttf +HindVadodara-Medium.ttf +HindVadodara-Regular.ttf +HindVadodara-SemiBold.ttf +HoltwoodOneSC.ttf +HomemadeApple-Regular.ttf +Homenaje-Regular.ttf +Hubballi-Regular.ttf +Hurricane-Regular.ttf +IBMPlexMono-Bold.ttf +IBMPlexMono-BoldItalic.ttf +IBMPlexMono-ExtraLight.ttf +IBMPlexMono-ExtraLightItalic.ttf +IBMPlexMono-Italic.ttf +IBMPlexMono-Light.ttf +IBMPlexMono-LightItalic.ttf +IBMPlexMono-Medium.ttf +IBMPlexMono-MediumItalic.ttf +IBMPlexMono-Regular.ttf +IBMPlexMono-SemiBold.ttf +IBMPlexMono-SemiBoldItalic.ttf +IBMPlexMono-Thin.ttf +IBMPlexMono-ThinItalic.ttf +IBMPlexSans-Bold.ttf +IBMPlexSans-BoldItalic.ttf +IBMPlexSans-ExtraLight.ttf +IBMPlexSans-ExtraLightItalic.ttf +IBMPlexSans-Italic.ttf +IBMPlexSans-Light.ttf +IBMPlexSans-LightItalic.ttf +IBMPlexSans-Medium.ttf +IBMPlexSans-MediumItalic.ttf +IBMPlexSans-Regular.ttf +IBMPlexSans-SemiBold.ttf +IBMPlexSans-SemiBoldItalic.ttf +IBMPlexSans-Thin.ttf +IBMPlexSans-ThinItalic.ttf +IBMPlexSansArabic-Bold.ttf +IBMPlexSansArabic-ExtraLight.ttf +IBMPlexSansArabic-Light.ttf +IBMPlexSansArabic-Medium.ttf +IBMPlexSansArabic-Regular.ttf +IBMPlexSansArabic-SemiBold.ttf +IBMPlexSansArabic-Thin.ttf +IBMPlexSansCondensed-Bold.ttf +IBMPlexSansCondensed-BoldItalic.ttf +IBMPlexSansCondensed-ExtraLight.ttf +IBMPlexSansCondensed-ExtraLightItalic.ttf +IBMPlexSansCondensed-Italic.ttf +IBMPlexSansCondensed-Light.ttf +IBMPlexSansCondensed-LightItalic.ttf +IBMPlexSansCondensed-Medium.ttf +IBMPlexSansCondensed-MediumItalic.ttf +IBMPlexSansCondensed-Regular.ttf +IBMPlexSansCondensed-SemiBold.ttf +IBMPlexSansCondensed-SemiBoldItalic.ttf +IBMPlexSansCondensed-Thin.ttf +IBMPlexSansCondensed-ThinItalic.ttf +IBMPlexSansDevanagari-Bold.ttf +IBMPlexSansDevanagari-ExtraLight.ttf +IBMPlexSansDevanagari-Light.ttf +IBMPlexSansDevanagari-Medium.ttf +IBMPlexSansDevanagari-Regular.ttf +IBMPlexSansDevanagari-SemiBold.ttf +IBMPlexSansDevanagari-Thin.ttf +IBMPlexSansHebrew-Bold.ttf +IBMPlexSansHebrew-ExtraLight.ttf +IBMPlexSansHebrew-Light.ttf +IBMPlexSansHebrew-Medium.ttf +IBMPlexSansHebrew-Regular.ttf +IBMPlexSansHebrew-SemiBold.ttf +IBMPlexSansHebrew-Thin.ttf +IBMPlexSansJP-Bold.ttf +IBMPlexSansJP-ExtraLight.ttf +IBMPlexSansJP-Light.ttf +IBMPlexSansJP-Medium.ttf +IBMPlexSansJP-Regular.ttf +IBMPlexSansJP-SemiBold.ttf +IBMPlexSansJP-Thin.ttf +IBMPlexSansKR-Bold.ttf +IBMPlexSansKR-ExtraLight.ttf +IBMPlexSansKR-Light.ttf +IBMPlexSansKR-Medium.ttf +IBMPlexSansKR-Regular.ttf +IBMPlexSansKR-SemiBold.ttf +IBMPlexSansKR-Thin.ttf +IBMPlexSansThai-Bold.ttf +IBMPlexSansThai-ExtraLight.ttf +IBMPlexSansThai-Light.ttf +IBMPlexSansThai-Medium.ttf +IBMPlexSansThai-Regular.ttf +IBMPlexSansThai-SemiBold.ttf +IBMPlexSansThai-Thin.ttf +IBMPlexSansThaiLooped-Bold.ttf +IBMPlexSansThaiLooped-ExtraLight.ttf +IBMPlexSansThaiLooped-Light.ttf +IBMPlexSansThaiLooped-Medium.ttf +IBMPlexSansThaiLooped-Regular.ttf +IBMPlexSansThaiLooped-SemiBold.ttf +IBMPlexSansThaiLooped-Thin.ttf +IBMPlexSerif-Bold.ttf +IBMPlexSerif-BoldItalic.ttf +IBMPlexSerif-ExtraLight.ttf +IBMPlexSerif-ExtraLightItalic.ttf +IBMPlexSerif-Italic.ttf +IBMPlexSerif-Light.ttf +IBMPlexSerif-LightItalic.ttf +IBMPlexSerif-Medium.ttf +IBMPlexSerif-MediumItalic.ttf +IBMPlexSerif-Regular.ttf +IBMPlexSerif-SemiBold.ttf +IBMPlexSerif-SemiBoldItalic.ttf +IBMPlexSerif-Thin.ttf +IBMPlexSerif-ThinItalic.ttf +IMFELLDoublePica-Italic.ttf +IMFELLDoublePica-Regular.ttf +IMFeDPsc28P.ttf +IMFeENit28P.ttf +IMFeENrm28P.ttf +IMFeENsc28P.ttf +IMFeFCit28P.ttf +IMFeFCrm28P.ttf +IMFeFCsc28P.ttf +IMFeGPit28P.ttf +IMFeGPrm28P.ttf +IMFeGPsc28P.ttf +IMFePIit28P.ttf +IMFePIrm28P.ttf +IMFePIsc28P.ttf +IbarraRealNova-Italic[wght].ttf +IbarraRealNova[wght].ttf +Iceberg-Regular.ttf +Iceland-Regular.ttf +Imbue[opsz,wght].ttf +ImperialScript-Regular.ttf +Imprima-Regular.ttf +Inconsolata-Black.ttf +Inconsolata-Bold.ttf +Inconsolata-Condensed.ttf +Inconsolata-CondensedBlack.ttf +Inconsolata-CondensedBold.ttf +Inconsolata-CondensedExtraBold.ttf +Inconsolata-CondensedExtraLight.ttf +Inconsolata-CondensedLight.ttf +Inconsolata-CondensedMedium.ttf +Inconsolata-CondensedRegular.ttf +Inconsolata-CondensedSemiBold.ttf +Inconsolata-Expanded.ttf +Inconsolata-ExpandedBlack.ttf +Inconsolata-ExpandedBold.ttf +Inconsolata-ExpandedExtraBold.ttf +Inconsolata-ExpandedExtraLight.ttf +Inconsolata-ExpandedLight.ttf +Inconsolata-ExpandedMedium.ttf +Inconsolata-ExpandedRegular.ttf +Inconsolata-ExpandedSemiBold.ttf +Inconsolata-ExtraBold.ttf +Inconsolata-ExtraCondensed.ttf +Inconsolata-ExtraCondensedBlack.ttf +Inconsolata-ExtraCondensedBold.ttf +Inconsolata-ExtraCondensedExtraBold.ttf +Inconsolata-ExtraCondensedExtraLight.ttf +Inconsolata-ExtraCondensedLight.ttf +Inconsolata-ExtraCondensedMedium.ttf +Inconsolata-ExtraCondensedRegular.ttf +Inconsolata-ExtraCondensedSemiBold.ttf +Inconsolata-ExtraExpanded.ttf +Inconsolata-ExtraExpandedBlack.ttf +Inconsolata-ExtraExpandedBold.ttf +Inconsolata-ExtraExpandedExtraBold.ttf +Inconsolata-ExtraExpandedExtraLight.ttf +Inconsolata-ExtraExpandedLight.ttf +Inconsolata-ExtraExpandedMedium.ttf +Inconsolata-ExtraExpandedRegular.ttf +Inconsolata-ExtraExpandedSemiBold.ttf +Inconsolata-ExtraLight.ttf +Inconsolata-Light.ttf +Inconsolata-Medium.ttf +Inconsolata-Regular.ttf +Inconsolata-SemiBold.ttf +Inconsolata-SemiCondensed.ttf +Inconsolata-SemiCondensedBlack.ttf +Inconsolata-SemiCondensedBold.ttf +Inconsolata-SemiCondensedExtraBold.ttf +Inconsolata-SemiCondensedExtraLight.ttf +Inconsolata-SemiCondensedLight.ttf +Inconsolata-SemiCondensedMedium.ttf +Inconsolata-SemiCondensedRegular.ttf +Inconsolata-SemiCondensedSemiBold.ttf +Inconsolata-SemiExpanded.ttf +Inconsolata-SemiExpandedBlack.ttf +Inconsolata-SemiExpandedBold.ttf +Inconsolata-SemiExpandedExtraBold.ttf +Inconsolata-SemiExpandedExtraLight.ttf +Inconsolata-SemiExpandedLight.ttf +Inconsolata-SemiExpandedMedium.ttf +Inconsolata-SemiExpandedRegular.ttf +Inconsolata-SemiExpandedSemiBold.ttf +Inconsolata-UltraCondensed.ttf +Inconsolata-UltraCondensedBlack.ttf +Inconsolata-UltraCondensedBold.ttf +Inconsolata-UltraCondensedExtraBold.ttf +Inconsolata-UltraCondensedExtraLight.ttf +Inconsolata-UltraCondensedLight.ttf +Inconsolata-UltraCondensedMedium.ttf +Inconsolata-UltraCondensedRegular.ttf +Inconsolata-UltraCondensedSemiBold.ttf +Inconsolata-UltraExpanded.ttf +Inconsolata-UltraExpandedBlack.ttf +Inconsolata-UltraExpandedBold.ttf +Inconsolata-UltraExpandedExtraBold.ttf +Inconsolata-UltraExpandedExtraLight.ttf +Inconsolata-UltraExpandedLight.ttf +Inconsolata-UltraExpandedMedium.ttf +Inconsolata-UltraExpandedRegular.ttf +Inconsolata-UltraExpandedSemiBold.ttf +Inconsolata.otf +Inconsolata[wdth,wght].ttf +Inder-Regular.ttf +IndieFlower-Regular.ttf +IngridDarling-Regular.ttf +Inika-Bold.ttf +Inika-Regular.ttf +InknutAntiqua-Black.ttf +InknutAntiqua-Bold.ttf +InknutAntiqua-ExtraBold.ttf +InknutAntiqua-Light.ttf +InknutAntiqua-Medium.ttf +InknutAntiqua-Regular.ttf +InknutAntiqua-SemiBold.ttf +InriaSans-Bold.ttf +InriaSans-BoldItalic.ttf +InriaSans-Italic.ttf +InriaSans-Light.ttf +InriaSans-LightItalic.ttf +InriaSans-Regular.ttf +InriaSerif-Bold.ttf +InriaSerif-BoldItalic.ttf +InriaSerif-Italic.ttf +InriaSerif-Light.ttf +InriaSerif-LightItalic.ttf +InriaSerif-Regular.ttf +Inspiration-Regular.ttf +InstrumentSans-Italic[wdth,wght].ttf +InstrumentSans[wdth,wght].ttf +InstrumentSerif-Italic.ttf +InstrumentSerif-Regular.ttf +InterTight-Italic[wght].ttf +InterTight[wght].ttf +Inter[slnt,wght].ttf +IrishGrover-Regular.ttf +IslandMoments-Regular.ttf +IstokWeb-Bold.ttf +IstokWeb-BoldItalic.ttf +IstokWeb-Italic.ttf +IstokWeb-Regular.ttf +Italiana-Regular.ttf +Italianno-Regular.ttf +Itim-Regular.ttf +JacquesFrancois-Regular.ttf +JacquesFrancoisShadow-Regular.ttf +Jaldi-Bold.ttf +Jaldi-Regular.ttf +JejuGothic-Regular.ttf +JejuHallasan-Regular.ttf +JejuMyeongjo-Regular.ttf +JetBrainsMono-Italic[wght].ttf +JetBrainsMono[wght].ttf +JimNightshade-Regular.ttf +Joan-Regular.ttf +JockeyOne-Regular.ttf +JollyLodger-Regular.ttf +Jomhuria-Regular.ttf +Jomolhari-Regular.ttf +JosefinSans-Italic[wght].ttf +JosefinSans[wght].ttf +JosefinSlab-Italic[wght].ttf +JosefinSlab[wght].ttf +Jost-Italic[wght].ttf +Jost[wght].ttf +JotiOne-Regular.ttf +Jua-Regular.ttf +Judson-Bold.ttf +Judson-Italic.ttf +Judson-Regular.ttf +Julee-Regular.ttf +JuliusSansOne-Regular.ttf +Junge-Regular.ttf +Jura[wght].ttf +JustAnotherHand-Regular.ttf +JustMeAgainDownHere.ttf +K2D-Bold.ttf +K2D-BoldItalic.ttf +K2D-ExtraBold.ttf +K2D-ExtraBoldItalic.ttf +K2D-ExtraLight.ttf +K2D-ExtraLightItalic.ttf +K2D-Italic.ttf +K2D-Light.ttf +K2D-LightItalic.ttf +K2D-Medium.ttf +K2D-MediumItalic.ttf +K2D-Regular.ttf +K2D-SemiBold.ttf +K2D-SemiBoldItalic.ttf +K2D-Thin.ttf +K2D-ThinItalic.ttf +Kablammo[MORF].ttf +Kadwa-Bold.ttf +Kadwa-Regular.ttf +KaiseiDecol-Bold.ttf +KaiseiDecol-Medium.ttf +KaiseiDecol-Regular.ttf +KaiseiHarunoUmi-Bold.ttf +KaiseiHarunoUmi-Medium.ttf +KaiseiHarunoUmi-Regular.ttf +KaiseiOpti-Bold.ttf +KaiseiOpti-Medium.ttf +KaiseiOpti-Regular.ttf +KaiseiTokumin-Bold.ttf +KaiseiTokumin-ExtraBold.ttf +KaiseiTokumin-Medium.ttf +KaiseiTokumin-Regular.ttf +Kalam-Bold.ttf +Kalam-Light.ttf +Kalam-Regular.ttf +Kameron-Bold.ttf +Kameron-Regular.ttf +Kanit-Black.ttf +Kanit-BlackItalic.ttf +Kanit-Bold.ttf +Kanit-BoldItalic.ttf +Kanit-ExtraBold.ttf +Kanit-ExtraBoldItalic.ttf +Kanit-ExtraLight.ttf +Kanit-ExtraLightItalic.ttf +Kanit-Italic.ttf +Kanit-Light.ttf +Kanit-LightItalic.ttf +Kanit-Medium.ttf +Kanit-MediumItalic.ttf +Kanit-Regular.ttf +Kanit-SemiBold.ttf +Kanit-SemiBoldItalic.ttf +Kanit-Thin.ttf +Kanit-ThinItalic.ttf +KantumruyPro-Italic[wght].ttf +KantumruyPro[wght].ttf +Kapakana[wght].ttf +Karantina-Bold.ttf +Karantina-Light.ttf +Karantina-Regular.ttf +Karla-Italic[wght].ttf +KarlaTamilInclined-Bold.ttf +KarlaTamilInclined-Regular.ttf +KarlaTamilUpright-Bold.ttf +KarlaTamilUpright-Regular.ttf +Karla[wght].ttf +Karma-Bold.ttf +Karma-Light.ttf +Karma-Medium.ttf +Karma-Regular.ttf +Karma-SemiBold.ttf +Katibeh-Regular.ttf +KaushanScript-Regular.ttf +Kavivanar-Regular.ttf +Kavoon-Regular.ttf +KdamThmorPro-Regular.ttf +KeaniaOne-Regular.ttf +KellySlab-Regular.ttf +Kenia-Regular.ttf +Khand-Bold.ttf +Khand-Light.ttf +Khand-Medium.ttf +Khand-Regular.ttf +Khand-SemiBold.ttf +Khmer.ttf +Khula-Bold.ttf +Khula-ExtraBold.ttf +Khula-Light.ttf +Khula-Regular.ttf +Khula-SemiBold.ttf +Khyay-Regular.ttf +Kings-Regular.ttf +KirangHaerang-Regular.ttf +KiteOne-Regular.ttf +KiwiMaru-Light.ttf +KiwiMaru-Medium.ttf +KiwiMaru-Regular.ttf +KleeOne-Regular.ttf +KleeOne-SemiBold.ttf +Knewave-Regular.ttf +KoHo-Bold.ttf +KoHo-BoldItalic.ttf +KoHo-ExtraLight.ttf +KoHo-ExtraLightItalic.ttf +KoHo-Italic.ttf +KoHo-Light.ttf +KoHo-LightItalic.ttf +KoHo-Medium.ttf +KoHo-MediumItalic.ttf +KoHo-Regular.ttf +KoHo-SemiBold.ttf +KoHo-SemiBoldItalic.ttf +KoPubBatang-Bold.ttf +KoPubBatang-Light.ttf +KoPubBatang-Regular.ttf +Kodchasan-Bold.ttf +Kodchasan-BoldItalic.ttf +Kodchasan-ExtraLight.ttf +Kodchasan-ExtraLightItalic.ttf +Kodchasan-Italic.ttf +Kodchasan-Light.ttf +Kodchasan-LightItalic.ttf +Kodchasan-Medium.ttf +Kodchasan-MediumItalic.ttf +Kodchasan-Regular.ttf +Kodchasan-SemiBold.ttf +Kodchasan-SemiBoldItalic.ttf +KohSantepheap-Black.ttf +KohSantepheap-Bold.ttf +KohSantepheap-Light.ttf +KohSantepheap-Regular.ttf +KohSantepheap-Thin.ttf +Kokoro-Regular.ttf +KolkerBrush-Regular.ttf +KonkhmerSleokchher-Regular.ttf +Kosugi-Regular.ttf +KosugiMaru-Regular.ttf +KottaOne-Regular.ttf +Koulen-Regular.ttf +Kranky-Regular.ttf +Kreon[wght].ttf +Kristi-Regular.ttf +KronaOne-Regular.ttf +Krub-Bold.ttf +Krub-BoldItalic.ttf +Krub-ExtraLight.ttf +Krub-ExtraLightItalic.ttf +Krub-Italic.ttf +Krub-Light.ttf +Krub-LightItalic.ttf +Krub-Medium.ttf +Krub-MediumItalic.ttf +Krub-Regular.ttf +Krub-SemiBold.ttf +Krub-SemiBoldItalic.ttf +Kufam-Italic[wght].ttf +Kufam[wght].ttf +KulimPark-Bold.ttf +KulimPark-BoldItalic.ttf +KulimPark-ExtraLight.ttf +KulimPark-ExtraLightItalic.ttf +KulimPark-Italic.ttf +KulimPark-Light.ttf +KulimPark-LightItalic.ttf +KulimPark-Regular.ttf +KulimPark-SemiBold.ttf +KulimPark-SemiBoldItalic.ttf +KumarOne-Regular.ttf +KumbhSans[YOPQ,wght].ttf +Kurale-Regular.ttf +LaBelleAurore.ttf +Labrada-Italic[wght].ttf +Labrada[wght].ttf +Lacquer-Regular.ttf +Laila-Bold.ttf +Laila-Light.ttf +Laila-Medium.ttf +Laila-Regular.ttf +Laila-SemiBold.ttf +LakkiReddy-Regular.ttf +Lalezar-Regular.ttf +Lancelot-Regular.ttf +Langar-Regular.ttf +LaoMuangDon-Regular.ttf +LaoMuangKhong-Regular.ttf +LaoSansPro-Regular.ttf +Lateef-Bold.ttf +Lateef-ExtraBold.ttf +Lateef-ExtraLight.ttf +Lateef-Light.ttf +Lateef-Medium.ttf +Lateef-Regular.ttf +Lateef-SemiBold.ttf +Lato-Black.ttf +Lato-BlackItalic.ttf +Lato-Bold.ttf +Lato-BoldItalic.ttf +Lato-ExtraBold.ttf +Lato-ExtraBoldItalic.ttf +Lato-ExtraLight.ttf +Lato-ExtraLightItalic.ttf +Lato-Italic.ttf +Lato-Light.ttf +Lato-LightItalic.ttf +Lato-Medium.ttf +Lato-MediumItalic.ttf +Lato-Regular.ttf +Lato-SemiBold.ttf +Lato-SemiBoldItalic.ttf +Lato-Thin.ttf +Lato-ThinItalic.ttf +LavishlyYours-Regular.ttf +LeagueGothic[wdth].ttf +LeagueScript-Regular.ttf +LeagueSpartan[wght].ttf +LeckerliOne-Regular.ttf +Ledger-Regular.ttf +Lekton-Bold.ttf +Lekton-Italic.ttf +Lekton-Regular.ttf +Lemon-Regular.ttf +LemonadaVFBeta.ttf +Lemonada[wght].ttf +LexendDeca[wght].ttf +LexendExa[wght].ttf +LexendGiga[wght].ttf +LexendMega[wght].ttf +LexendPeta[wght].ttf +LexendTera[wght].ttf +LexendZetta[wght].ttf +Lexend[wght].ttf +LiberationMono-Bold.ttf +LiberationMono-BoldItalic.ttf +LiberationMono-Italic.ttf +LiberationMono-Regular.ttf +LiberationSans-Bold.ttf +LiberationSans-BoldItalic.ttf +LiberationSans-Italic.ttf +LiberationSans-Regular.ttf +LiberationSansNarrow-Bold.ttf +LiberationSansNarrow-BoldItalic.ttf +LiberationSansNarrow-Italic.ttf +LiberationSansNarrow-Regular.ttf +LiberationSerif-Bold.ttf +LiberationSerif-BoldItalic.ttf +LiberationSerif-Italic.ttf +LiberationSerif-Regular.ttf +LibreBarcode128-Regular.ttf +LibreBarcode128Text-Regular.ttf +LibreBarcode39-Regular.ttf +LibreBarcode39Extended-Regular.ttf +LibreBarcode39ExtendedText-Regular.ttf +LibreBarcode39Text-Regular.ttf +LibreBarcodeEAN13Text-Regular.ttf +LibreBaskerville-Bold.ttf +LibreBaskerville-Italic.ttf +LibreBaskerville-Regular.ttf +LibreBodoni-Italic[wght].ttf +LibreBodoni[wght].ttf +LibreCaslonDisplay-Regular.ttf +LibreCaslonText-Italic[wght].ttf +LibreCaslonText[wght].ttf +LibreFranklin-Italic[wght].ttf +LibreFranklin[wght].ttf +Licorice-Regular.ttf +LifeSavers-Bold.ttf +LifeSavers-ExtraBold.ttf +LifeSavers-Regular.ttf +Ligconsolata-Bold.ttf +Ligconsolata-Regular.ttf +LilitaOne-Regular.ttf +LilyScriptOne-Regular.ttf +Limelight-Regular.ttf +LindenHill-Italic.ttf +LindenHill-Regular.ttf +Literata-Italic[opsz,wght].ttf +Literata[opsz,wght].ttf +LiuJianMaoCao-Regular.ttf +Livvic-Black.ttf +Livvic-BlackItalic.ttf +Livvic-Bold.ttf +Livvic-BoldItalic.ttf +Livvic-ExtraLight.ttf +Livvic-ExtraLightItalic.ttf +Livvic-Italic.ttf +Livvic-Light.ttf +Livvic-LightItalic.ttf +Livvic-Medium.ttf +Livvic-MediumItalic.ttf +Livvic-Regular.ttf +Livvic-SemiBold.ttf +Livvic-SemiBoldItalic.ttf +Livvic-Thin.ttf +Livvic-ThinItalic.ttf +Lobster-Regular.ttf +LobsterTwo-Bold.ttf +LobsterTwo-BoldItalic.ttf +LobsterTwo-Italic.ttf +LobsterTwo-Regular.ttf +Lohit-Bengali.ttf +Lohit-Devanagari.ttf +Lohit-Tamil.ttf +LondrinaOutline-Regular.ttf +LondrinaShadow-Regular.ttf +LondrinaSketch-Regular.ttf +LondrinaSolid-Black.ttf +LondrinaSolid-Light.ttf +LondrinaSolid-Regular.ttf +LondrinaSolid-Thin.ttf +LongCang-Regular.ttf +Lora-Italic[wght].ttf +Lora[wght].ttf +LoveLight-Regular.ttf +LoveYaLikeASister.ttf +LovedbytheKing.ttf +LoversQuarrel-Regular.ttf +LuckiestGuy-Regular.ttf +Lugrasimo-Regular.ttf +Lumanosimo-Regular.ttf +Lusitana-Bold.ttf +Lusitana-Regular.ttf +Lustria-Regular.ttf +LuxuriousRoman-Regular.ttf +LuxuriousScript-Regular.ttf +MPLUS1Code[wght].ttf +MPLUS1[wght].ttf +MPLUS1p-Black.ttf +MPLUS1p-Bold.ttf +MPLUS1p-ExtraBold.ttf +MPLUS1p-Light.ttf +MPLUS1p-Medium.ttf +MPLUS1p-Regular.ttf +MPLUS1p-Thin.ttf +MPLUS2[wght].ttf +MPLUSCodeLatin[wdth,wght].ttf +MaShanZheng-Regular.ttf +Macondo-Regular.ttf +MacondoSwashCaps-Regular.ttf +Mada[wght].ttf +Magra-Bold.ttf +Magra-Regular.ttf +MaidenOrange-Regular.ttf +Maitree-Bold.ttf +Maitree-ExtraLight.ttf +Maitree-Light.ttf +Maitree-Medium.ttf +Maitree-Regular.ttf +Maitree-SemiBold.ttf +MajorMonoDisplay-Regular.ttf +Mako-Regular.ttf +Mali-Bold.ttf +Mali-BoldItalic.ttf +Mali-ExtraLight.ttf +Mali-ExtraLightItalic.ttf +Mali-Italic.ttf +Mali-Light.ttf +Mali-LightItalic.ttf +Mali-Medium.ttf +Mali-MediumItalic.ttf +Mali-Regular.ttf +Mali-SemiBold.ttf +Mali-SemiBoldItalic.ttf +Mallanna-Regular.ttf +Mandali-Regular.ttf +Manjari-Bold.ttf +Manjari-Regular.ttf +Manjari-Thin.ttf +Manrope[wght].ttf +Mansalva-Regular.ttf +Manuale-Italic[wght].ttf +Manuale[wght].ttf +Marcellus-Regular.ttf +MarcellusSC-Regular.ttf +MarckScript-Regular.ttf +Margarine-Regular.ttf +Marhey[wght].ttf +MarkaziText-VF.ttf +MarkaziText[wght].ttf +MarkoOne-Regular.ttf +Marmelad-Regular.ttf +Martel-Bold.ttf +Martel-DemiBold.ttf +Martel-ExtraBold.ttf +Martel-Heavy.ttf +Martel-Light.ttf +Martel-Regular.ttf +Martel-UltraLight.ttf +MartelSans-Black.ttf +MartelSans-Bold.ttf +MartelSans-ExtraBold.ttf +MartelSans-ExtraLight.ttf +MartelSans-Light.ttf +MartelSans-Regular.ttf +MartelSans-SemiBold.ttf +MartianMono[wdth,wght].ttf +Marvel-Bold.ttf +Marvel-BoldItalic.ttf +Marvel-Italic.ttf +Marvel-Regular.ttf +Mate-Italic.ttf +Mate-Regular.ttf +MateSC-Regular.ttf +MathJax_AMS-Regular.otf +MathJax_Caligraphic-Bold.otf +MathJax_Caligraphic-Regular.otf +MathJax_Fraktur-Bold.otf +MathJax_Fraktur-Regular.otf +MathJax_Main-Bold.otf +MathJax_Main-Italic.otf +MathJax_Main-Regular.otf +MathJax_Math-BoldItalic.otf +MathJax_Math-Italic.otf +MathJax_Math-Regular.otf +MathJax_SansSerif-Bold.otf +MathJax_SansSerif-Italic.otf +MathJax_SansSerif-Regular.otf +MathJax_Script-Regular.otf +MathJax_Size1-Regular.otf +MathJax_Size2-Regular.otf +MathJax_Size3-Regular.otf +MathJax_Size4-Regular.otf +MathJax_Typewriter-Regular.otf +MathJax_Vector-Bold.otf +MathJax_Vector-Regular.otf +MathJax_WinChrome-Regular.otf +MathJax_WinIE6-Regular.otf +MavenPro-Regular.ttf +MavenProVFBeta.ttf +MavenPro[wght].ttf +McLaren-Regular.ttf +MeaCulpa-Regular.ttf +Meddon.ttf +MedievalSharp.ttf +MedulaOne-Regular.ttf +MeeraInimai-Regular.ttf +Megrim.ttf +MeieScript-Regular.ttf +MeowScript-Regular.ttf +MergeOne-Regular.ttf +Merienda[wght].ttf +Merriweather-Black.ttf +Merriweather-BlackItalic.ttf +Merriweather-Bold.ttf +Merriweather-BoldItalic.ttf +Merriweather-Italic.ttf +Merriweather-Light.ttf +Merriweather-LightItalic.ttf +Merriweather-Regular.ttf +MerriweatherSans-Italic[wght].ttf +MerriweatherSans[wght].ttf +MervaleScript-Regular.ttf +Metal-Regular.ttf +MetalMania-Regular.ttf +Metamorphous-Regular.ttf +Metrophobic-Regular.ttf +Miama-Regular.ttf +Michroma.ttf +Milonga-Regular.ttf +Miltonian-Regular.ttf +MiltonianTattoo-Regular.ttf +Mina-Bold.ttf +Mina-Regular.ttf +Mingzat-Regular.ttf +Miniver-Regular.ttf +MiriamLibre-Bold.ttf +MiriamLibre-Regular.ttf +Mirza-Bold.ttf +Mirza-Medium.ttf +Mirza-Regular.ttf +Mirza-SemiBold.ttf +MissFajardose-Regular.ttf +Mitr-Bold.ttf +Mitr-ExtraLight.ttf +Mitr-Light.ttf +Mitr-Medium.ttf +Mitr-Regular.ttf +Mitr-SemiBold.ttf +MochiyPopOne-Regular.ttf +MochiyPopPOne-Regular.ttf +Modak-Regular.ttf +ModernAntiqua-Regular.ttf +Mogra-Regular.ttf +Mohave-Italic[wght].ttf +Mohave[wght].ttf +Molengo-Regular.ttf +Molle-Regular.ttf +Monda-Bold.ttf +Monda-Regular.ttf +Monofett-Regular.ttf +MonomaniacOne-Regular.ttf +Monoton-Regular.ttf +MonsieurLaDoulaise-Regular.ttf +Montaga-Regular.ttf +MontaguSlab[opsz,wght].ttf +MonteCarlo-Regular.ttf +Montez-Regular.ttf +Montserrat-Italic[wght].ttf +MontserratAlternates-Black.ttf +MontserratAlternates-BlackItalic.ttf +MontserratAlternates-Bold.ttf +MontserratAlternates-BoldItalic.ttf +MontserratAlternates-ExtraBold.ttf +MontserratAlternates-ExtraBoldItalic.ttf +MontserratAlternates-ExtraLight.ttf +MontserratAlternates-ExtraLightItalic.ttf +MontserratAlternates-Italic.ttf +MontserratAlternates-Light.ttf +MontserratAlternates-LightItalic.ttf +MontserratAlternates-Medium.ttf +MontserratAlternates-MediumItalic.ttf +MontserratAlternates-Regular.ttf +MontserratAlternates-SemiBold.ttf +MontserratAlternates-SemiBoldItalic.ttf +MontserratAlternates-Thin.ttf +MontserratAlternates-ThinItalic.ttf +MontserratSubrayada-Bold.ttf +MontserratSubrayada-Regular.ttf +Montserrat[wght].ttf +MooLahLah-Regular.ttf +MoonDance-Regular.ttf +Moul-Regular.ttf +Moulpali-Regular.ttf +MountainsofChristmas-Bold.ttf +MountainsofChristmas-Regular.ttf +MouseMemoirs-Regular.ttf +MrBedfort-Regular.ttf +MrDafoe-Regular.ttf +MrDeHaviland-Regular.ttf +MrsSaintDelafield-Regular.ttf +MrsSheppards-Regular.ttf +MsMadi-Regular.ttf +Mukta-Bold.ttf +Mukta-ExtraBold.ttf +Mukta-ExtraLight.ttf +Mukta-Light.ttf +Mukta-Medium.ttf +Mukta-Regular.ttf +Mukta-SemiBold.ttf +MuktaMahee-Bold.ttf +MuktaMahee-ExtraBold.ttf +MuktaMahee-ExtraLight.ttf +MuktaMahee-Light.ttf +MuktaMahee-Medium.ttf +MuktaMahee-Regular.ttf +MuktaMahee-SemiBold.ttf +MuktaMalar-Bold.ttf +MuktaMalar-ExtraBold.ttf +MuktaMalar-ExtraLight.ttf +MuktaMalar-Light.ttf +MuktaMalar-Medium.ttf +MuktaMalar-Regular.ttf +MuktaMalar-SemiBold.ttf +MuktaVaani-Bold.ttf +MuktaVaani-ExtraBold.ttf +MuktaVaani-ExtraLight.ttf +MuktaVaani-Light.ttf +MuktaVaani-Medium.ttf +MuktaVaani-Regular.ttf +MuktaVaani-SemiBold.ttf +Mulish-Italic[wght].ttf +Mulish[wght].ttf +Murecho[wght].ttf +MuseoModerno-Italic[wght].ttf +MuseoModerno[wght].ttf +MySoul-Regular.ttf +MyanmarSansPro-Regular.ttf +Mynerve-Regular.ttf +MysteryQuest-Regular.ttf +NATS-Regular.ttf +NTR-Regular.ttf +Nabla[EDPT,EHLT].ttf +NanumBrushScript-Regular.ttf +NanumGothic-Bold.ttf +NanumGothic-ExtraBold.ttf +NanumGothic-Regular.ttf +NanumGothicCoding-Bold.ttf +NanumGothicCoding-Regular.ttf +NanumMyeongjo-Bold.ttf +NanumMyeongjo-ExtraBold.ttf +NanumMyeongjo-Regular.ttf +NanumPenScript-Regular.ttf +Narnoor-Regular.ttf +Neonderthaw-Regular.ttf +NerkoOne-Regular.ttf +Neucha.ttf +Neuton-Bold.ttf +Neuton-ExtraBold.ttf +Neuton-ExtraLight.ttf +Neuton-Italic.ttf +Neuton-Light.ttf +Neuton-Regular.ttf +NewRocker-Regular.ttf +NewTegomin-Regular.ttf +NewsCycle-Bold.ttf +NewsCycle-Regular.ttf +Newsreader-Italic[opsz,wght].ttf +Newsreader[opsz,wght].ttf +NicoMoji-Regular.ttf +Niconne-Regular.ttf +Nikukyu-Regular.ttf +NimbusMonoPS-Bold.otf +NimbusMonoPS-Bold.t1 +NimbusMonoPS-BoldItalic.otf +NimbusMonoPS-BoldItalic.t1 +NimbusMonoPS-Italic.otf +NimbusMonoPS-Italic.t1 +NimbusMonoPS-Regular.otf +NimbusMonoPS-Regular.t1 +NimbusRoman-Bold.otf +NimbusRoman-Bold.t1 +NimbusRoman-BoldItalic.otf +NimbusRoman-BoldItalic.t1 +NimbusRoman-Italic.otf +NimbusRoman-Italic.t1 +NimbusRoman-Regular.otf +NimbusRoman-Regular.t1 +NimbusSans-Bold.otf +NimbusSans-Bold.t1 +NimbusSans-BoldItalic.otf +NimbusSans-BoldItalic.t1 +NimbusSans-Italic.otf +NimbusSans-Italic.t1 +NimbusSans-Regular.otf +NimbusSans-Regular.t1 +NimbusSansNarrow-Bold.otf +NimbusSansNarrow-Bold.t1 +NimbusSansNarrow-BoldOblique.otf +NimbusSansNarrow-BoldOblique.t1 +NimbusSansNarrow-Oblique.otf +NimbusSansNarrow-Oblique.t1 +NimbusSansNarrow-Regular.otf +NimbusSansNarrow-Regular.t1 +Niramit-Bold.ttf +Niramit-BoldItalic.ttf +Niramit-ExtraLight.ttf +Niramit-ExtraLightItalic.ttf +Niramit-Italic.ttf +Niramit-Light.ttf +Niramit-LightItalic.ttf +Niramit-Medium.ttf +Niramit-MediumItalic.ttf +Niramit-Regular.ttf +Niramit-SemiBold.ttf +Niramit-SemiBoldItalic.ttf +NixieOne-Regular.ttf +Nobile-Bold.ttf +Nobile-BoldItalic.ttf +Nobile-Italic.ttf +Nobile-Medium.ttf +Nobile-MediumItalic.ttf +Nobile-Regular.ttf +Nokora-Black.ttf +Nokora-Bold.ttf +Nokora-Light.ttf +Nokora-Regular.ttf +Nokora-Thin.ttf +Norican-Regular.ttf +Nosifer-Regular.ttf +NosiferCaps-Regular.ttf +Notable-Regular.ttf +NothingYouCouldDo.ttf +NoticiaText-Bold.ttf +NoticiaText-BoldItalic.ttf +NoticiaText-Italic.ttf +NoticiaText-Regular.ttf +NotoColorEmoji-Regular.ttf +NotoColorEmoji.ttf +NotoColorEmojiCompatTest-Regular.ttf +NotoKufiArabic-Black.ttf +NotoKufiArabic-Bold.ttf +NotoKufiArabic-ExtraBold.ttf +NotoKufiArabic-ExtraLight.ttf +NotoKufiArabic-Light.ttf +NotoKufiArabic-Medium.ttf +NotoKufiArabic-Regular.ttf +NotoKufiArabic-SemiBold.ttf +NotoKufiArabic-Thin.ttf +NotoKufiArabic[wght].ttf +NotoLoopedLao-Black.ttf +NotoLoopedLao-Bold.ttf +NotoLoopedLao-Condensed.ttf +NotoLoopedLao-CondensedBlack.ttf +NotoLoopedLao-CondensedBold.ttf +NotoLoopedLao-CondensedExtraBold.ttf +NotoLoopedLao-CondensedExtraLight.ttf +NotoLoopedLao-CondensedLight.ttf +NotoLoopedLao-CondensedMedium.ttf +NotoLoopedLao-CondensedSemiBold.ttf +NotoLoopedLao-CondensedThin.ttf +NotoLoopedLao-ExtraBold.ttf +NotoLoopedLao-ExtraCondensed.ttf +NotoLoopedLao-ExtraCondensedBlack.ttf +NotoLoopedLao-ExtraCondensedBold.ttf +NotoLoopedLao-ExtraCondensedExtraBold.ttf +NotoLoopedLao-ExtraCondensedExtraLight.ttf +NotoLoopedLao-ExtraCondensedLight.ttf +NotoLoopedLao-ExtraCondensedMedium.ttf +NotoLoopedLao-ExtraCondensedSemiBold.ttf +NotoLoopedLao-ExtraCondensedThin.ttf +NotoLoopedLao-ExtraLight.ttf +NotoLoopedLao-Light.ttf +NotoLoopedLao-Medium.ttf +NotoLoopedLao-Regular.ttf +NotoLoopedLao-SemiBold.ttf +NotoLoopedLao-SemiCondensed.ttf +NotoLoopedLao-SemiCondensedBlack.ttf +NotoLoopedLao-SemiCondensedBold.ttf +NotoLoopedLao-SemiCondensedExtraBold.ttf +NotoLoopedLao-SemiCondensedExtraLight.ttf +NotoLoopedLao-SemiCondensedLight.ttf +NotoLoopedLao-SemiCondensedMedium.ttf +NotoLoopedLao-SemiCondensedSemiBold.ttf +NotoLoopedLao-SemiCondensedThin.ttf +NotoLoopedLao-Thin.ttf +NotoLoopedLaoUI-Black.ttf +NotoLoopedLaoUI-Bold.ttf +NotoLoopedLaoUI-Condensed.ttf +NotoLoopedLaoUI-CondensedBlack.ttf +NotoLoopedLaoUI-CondensedBold.ttf +NotoLoopedLaoUI-CondensedExtraBold.ttf +NotoLoopedLaoUI-CondensedExtraLight.ttf +NotoLoopedLaoUI-CondensedLight.ttf +NotoLoopedLaoUI-CondensedMedium.ttf +NotoLoopedLaoUI-CondensedSemiBold.ttf +NotoLoopedLaoUI-CondensedThin.ttf +NotoLoopedLaoUI-ExtraBold.ttf +NotoLoopedLaoUI-ExtraCondensed.ttf +NotoLoopedLaoUI-ExtraCondensedBlack.ttf +NotoLoopedLaoUI-ExtraCondensedBold.ttf +NotoLoopedLaoUI-ExtraCondensedExtraBold.ttf +NotoLoopedLaoUI-ExtraCondensedExtraLight.ttf +NotoLoopedLaoUI-ExtraCondensedLight.ttf +NotoLoopedLaoUI-ExtraCondensedMedium.ttf +NotoLoopedLaoUI-ExtraCondensedSemiBold.ttf +NotoLoopedLaoUI-ExtraCondensedThin.ttf +NotoLoopedLaoUI-ExtraLight.ttf +NotoLoopedLaoUI-Light.ttf +NotoLoopedLaoUI-Medium.ttf +NotoLoopedLaoUI-Regular.ttf +NotoLoopedLaoUI-SemiBold.ttf +NotoLoopedLaoUI-SemiCondensed.ttf +NotoLoopedLaoUI-SemiCondensedBlack.ttf +NotoLoopedLaoUI-SemiCondensedBold.ttf +NotoLoopedLaoUI-SemiCondensedExtraBold.ttf +NotoLoopedLaoUI-SemiCondensedExtraLight.ttf +NotoLoopedLaoUI-SemiCondensedLight.ttf +NotoLoopedLaoUI-SemiCondensedMedium.ttf +NotoLoopedLaoUI-SemiCondensedSemiBold.ttf +NotoLoopedLaoUI-SemiCondensedThin.ttf +NotoLoopedLaoUI-Thin.ttf +NotoLoopedThai-Black.ttf +NotoLoopedThai-Bold.ttf +NotoLoopedThai-Condensed.ttf +NotoLoopedThai-CondensedBlack.ttf +NotoLoopedThai-CondensedBold.ttf +NotoLoopedThai-CondensedExtraBold.ttf +NotoLoopedThai-CondensedExtraLight.ttf +NotoLoopedThai-CondensedLight.ttf +NotoLoopedThai-CondensedMedium.ttf +NotoLoopedThai-CondensedSemiBold.ttf +NotoLoopedThai-CondensedThin.ttf +NotoLoopedThai-ExtraCondensed.ttf +NotoLoopedThai-ExtraCondensedBlack.ttf +NotoLoopedThai-ExtraCondensedBold.ttf +NotoLoopedThai-ExtraCondensedExtraBold.ttf +NotoLoopedThai-ExtraCondensedExtraLight.ttf +NotoLoopedThai-ExtraCondensedLight.ttf +NotoLoopedThai-ExtraCondensedMedium.ttf +NotoLoopedThai-ExtraCondensedSemiBold.ttf +NotoLoopedThai-ExtraCondensedThin.ttf +NotoLoopedThai-ExtraLight.ttf +NotoLoopedThai-Extrabold.ttf +NotoLoopedThai-Light.ttf +NotoLoopedThai-Medium.ttf +NotoLoopedThai-Regular.ttf +NotoLoopedThai-SemiBold.ttf +NotoLoopedThai-SemiCondensed.ttf +NotoLoopedThai-SemiCondensedBlack.ttf +NotoLoopedThai-SemiCondensedBold.ttf +NotoLoopedThai-SemiCondensedExtraBold.ttf +NotoLoopedThai-SemiCondensedExtraLight.ttf +NotoLoopedThai-SemiCondensedLight.ttf +NotoLoopedThai-SemiCondensedMedium.ttf +NotoLoopedThai-SemiCondensedSemiBold.ttf +NotoLoopedThai-SemiCondensedThin.ttf +NotoLoopedThai-Thin.ttf +NotoLoopedThaiUI-Black.ttf +NotoLoopedThaiUI-Bold.ttf +NotoLoopedThaiUI-Condensed.ttf +NotoLoopedThaiUI-CondensedBlack.ttf +NotoLoopedThaiUI-CondensedBold.ttf +NotoLoopedThaiUI-CondensedExtraBold.ttf +NotoLoopedThaiUI-CondensedExtraLight.ttf +NotoLoopedThaiUI-CondensedLight.ttf +NotoLoopedThaiUI-CondensedMedium.ttf +NotoLoopedThaiUI-CondensedSemiBold.ttf +NotoLoopedThaiUI-CondensedThin.ttf +NotoLoopedThaiUI-ExtraCondensed.ttf +NotoLoopedThaiUI-ExtraCondensedBlack.ttf +NotoLoopedThaiUI-ExtraCondensedBold.ttf +NotoLoopedThaiUI-ExtraCondensedExtraBold.ttf +NotoLoopedThaiUI-ExtraCondensedExtraLight.ttf +NotoLoopedThaiUI-ExtraCondensedLight.ttf +NotoLoopedThaiUI-ExtraCondensedMedium.ttf +NotoLoopedThaiUI-ExtraCondensedSemiBold.ttf +NotoLoopedThaiUI-ExtraCondensedThin.ttf +NotoLoopedThaiUI-ExtraLight.ttf +NotoLoopedThaiUI-Extrabold.ttf +NotoLoopedThaiUI-Light.ttf +NotoLoopedThaiUI-Medium.ttf +NotoLoopedThaiUI-Regular.ttf +NotoLoopedThaiUI-SemiBold.ttf +NotoLoopedThaiUI-SemiCondensed.ttf +NotoLoopedThaiUI-SemiCondensedBlack.ttf +NotoLoopedThaiUI-SemiCondensedBold.ttf +NotoLoopedThaiUI-SemiCondensedExtraBold.ttf +NotoLoopedThaiUI-SemiCondensedExtraLight.ttf +NotoLoopedThaiUI-SemiCondensedLight.ttf +NotoLoopedThaiUI-SemiCondensedMedium.ttf +NotoLoopedThaiUI-SemiCondensedSemiBold.ttf +NotoLoopedThaiUI-SemiCondensedThin.ttf +NotoLoopedThaiUI-Thin.ttf +NotoMono-Regular.ttf +NotoMusic-Regular.ttf +NotoNaskhArabic-Bold.ttf +NotoNaskhArabic-Medium.ttf +NotoNaskhArabic-Regular.ttf +NotoNaskhArabic-SemiBold.ttf +NotoNaskhArabicUI-Bold.ttf +NotoNaskhArabicUI-Medium.ttf +NotoNaskhArabicUI-Regular.ttf +NotoNaskhArabicUI-SemiBold.ttf +NotoNaskhArabicUI[wght].ttf +NotoNaskhArabic[wght].ttf +NotoNastaliqUrdu-Bold.ttf +NotoNastaliqUrdu-Regular.ttf +NotoNastaliqUrdu[wght].ttf +NotoRashiHebrew-Black.ttf +NotoRashiHebrew-Bold.ttf +NotoRashiHebrew-ExtraBold.ttf +NotoRashiHebrew-ExtraLight.ttf +NotoRashiHebrew-Light.ttf +NotoRashiHebrew-Medium.ttf +NotoRashiHebrew-Regular.ttf +NotoRashiHebrew-SemiBold.ttf +NotoRashiHebrew-Thin.ttf +NotoRashiHebrew[wght].ttf +NotoSans-Black.ttf +NotoSans-BlackItalic.ttf +NotoSans-Bold.ttf +NotoSans-BoldItalic.ttf +NotoSans-Condensed.ttf +NotoSans-CondensedBlack.ttf +NotoSans-CondensedBlackItalic.ttf +NotoSans-CondensedBold.ttf +NotoSans-CondensedBoldItalic.ttf +NotoSans-CondensedExtraBold.ttf +NotoSans-CondensedExtraBoldItalic.ttf +NotoSans-CondensedExtraLight.ttf +NotoSans-CondensedExtraLightItalic.ttf +NotoSans-CondensedItalic.ttf +NotoSans-CondensedLight.ttf +NotoSans-CondensedLightItalic.ttf +NotoSans-CondensedMedium.ttf +NotoSans-CondensedMediumItalic.ttf +NotoSans-CondensedSemiBold.ttf +NotoSans-CondensedSemiBoldItalic.ttf +NotoSans-CondensedThin.ttf +NotoSans-CondensedThinItalic.ttf +NotoSans-ExtraBold.ttf +NotoSans-ExtraBoldItalic.ttf +NotoSans-ExtraCondensed.ttf +NotoSans-ExtraCondensedBlack.ttf +NotoSans-ExtraCondensedBlackItalic.ttf +NotoSans-ExtraCondensedBold.ttf +NotoSans-ExtraCondensedBoldItalic.ttf +NotoSans-ExtraCondensedExtraBold.ttf +NotoSans-ExtraCondensedExtraBoldItalic.ttf +NotoSans-ExtraCondensedExtraLight.ttf +NotoSans-ExtraCondensedExtraLightItalic.ttf +NotoSans-ExtraCondensedItalic.ttf +NotoSans-ExtraCondensedLight.ttf +NotoSans-ExtraCondensedLightItalic.ttf +NotoSans-ExtraCondensedMedium.ttf +NotoSans-ExtraCondensedMediumItalic.ttf +NotoSans-ExtraCondensedSemiBold.ttf +NotoSans-ExtraCondensedSemiBoldItalic.ttf +NotoSans-ExtraCondensedThin.ttf +NotoSans-ExtraCondensedThinItalic.ttf +NotoSans-ExtraLight.ttf +NotoSans-ExtraLightItalic.ttf +NotoSans-Italic.ttf +NotoSans-Light.ttf +NotoSans-LightItalic.ttf +NotoSans-Medium.ttf +NotoSans-MediumItalic.ttf +NotoSans-Regular.ttf +NotoSans-SemiBold.ttf +NotoSans-SemiBoldItalic.ttf +NotoSans-SemiCondensed.ttf +NotoSans-SemiCondensedBlack.ttf +NotoSans-SemiCondensedBlackItalic.ttf +NotoSans-SemiCondensedBold.ttf +NotoSans-SemiCondensedBoldItalic.ttf +NotoSans-SemiCondensedExtraBold.ttf +NotoSans-SemiCondensedExtraBoldItalic.ttf +NotoSans-SemiCondensedExtraLight.ttf +NotoSans-SemiCondensedExtraLightItalic.ttf +NotoSans-SemiCondensedItalic.ttf +NotoSans-SemiCondensedLight.ttf +NotoSans-SemiCondensedLightItalic.ttf +NotoSans-SemiCondensedMedium.ttf +NotoSans-SemiCondensedMediumItalic.ttf +NotoSans-SemiCondensedSemiBold.ttf +NotoSans-SemiCondensedSemiBoldItalic.ttf +NotoSans-SemiCondensedThin.ttf +NotoSans-SemiCondensedThinItalic.ttf +NotoSans-Thin.ttf +NotoSans-ThinItalic.ttf +NotoSansAdlam-Bold.ttf +NotoSansAdlam-Regular.ttf +NotoSansAdlamUnjoined-Bold.ttf +NotoSansAdlamUnjoined-Regular.ttf +NotoSansAdlamUnjoined[wght].ttf +NotoSansAdlam[wght].ttf +NotoSansAnatolianHieroglyphs-Regular.ttf +NotoSansArabic-Black.ttf +NotoSansArabic-Bold.ttf +NotoSansArabic-Condensed.ttf +NotoSansArabic-CondensedBlack.ttf +NotoSansArabic-CondensedBold.ttf +NotoSansArabic-CondensedExtraBold.ttf +NotoSansArabic-CondensedExtraLight.ttf +NotoSansArabic-CondensedLight.ttf +NotoSansArabic-CondensedMedium.ttf +NotoSansArabic-CondensedSemiBold.ttf +NotoSansArabic-CondensedThin.ttf +NotoSansArabic-ExtraBold.ttf +NotoSansArabic-ExtraCondensed.ttf +NotoSansArabic-ExtraCondensedBlack.ttf +NotoSansArabic-ExtraCondensedBold.ttf +NotoSansArabic-ExtraCondensedExtraBold.ttf +NotoSansArabic-ExtraCondensedExtraLight.ttf +NotoSansArabic-ExtraCondensedLight.ttf +NotoSansArabic-ExtraCondensedMedium.ttf +NotoSansArabic-ExtraCondensedSemiBold.ttf +NotoSansArabic-ExtraCondensedThin.ttf +NotoSansArabic-ExtraLight.ttf +NotoSansArabic-Light.ttf +NotoSansArabic-Medium.ttf +NotoSansArabic-Regular.ttf +NotoSansArabic-SemiBold.ttf +NotoSansArabic-SemiCondensed.ttf +NotoSansArabic-SemiCondensedBlack.ttf +NotoSansArabic-SemiCondensedBold.ttf +NotoSansArabic-SemiCondensedExtraBold.ttf +NotoSansArabic-SemiCondensedExtraLight.ttf +NotoSansArabic-SemiCondensedLight.ttf +NotoSansArabic-SemiCondensedMedium.ttf +NotoSansArabic-SemiCondensedSemiBold.ttf +NotoSansArabic-SemiCondensedThin.ttf +NotoSansArabic-Thin.ttf +NotoSansArabicUI-Black.ttf +NotoSansArabicUI-Bold.ttf +NotoSansArabicUI-Condensed.ttf +NotoSansArabicUI-CondensedBlack.ttf +NotoSansArabicUI-CondensedBold.ttf +NotoSansArabicUI-CondensedExtraBold.ttf +NotoSansArabicUI-CondensedExtraLight.ttf +NotoSansArabicUI-CondensedLight.ttf +NotoSansArabicUI-CondensedMedium.ttf +NotoSansArabicUI-CondensedSemiBold.ttf +NotoSansArabicUI-CondensedThin.ttf +NotoSansArabicUI-ExtraBold.ttf +NotoSansArabicUI-ExtraCondensed.ttf +NotoSansArabicUI-ExtraCondensedBlack.ttf +NotoSansArabicUI-ExtraCondensedBold.ttf +NotoSansArabicUI-ExtraCondensedExtraBold.ttf +NotoSansArabicUI-ExtraCondensedExtraLight.ttf +NotoSansArabicUI-ExtraCondensedLight.ttf +NotoSansArabicUI-ExtraCondensedMedium.ttf +NotoSansArabicUI-ExtraCondensedSemiBold.ttf +NotoSansArabicUI-ExtraCondensedThin.ttf +NotoSansArabicUI-ExtraLight.ttf +NotoSansArabicUI-Light.ttf +NotoSansArabicUI-Medium.ttf +NotoSansArabicUI-Regular.ttf +NotoSansArabicUI-SemiBold.ttf +NotoSansArabicUI-SemiCondensed.ttf +NotoSansArabicUI-SemiCondensedBlack.ttf +NotoSansArabicUI-SemiCondensedBold.ttf +NotoSansArabicUI-SemiCondensedExtraBold.ttf +NotoSansArabicUI-SemiCondensedExtraLight.ttf +NotoSansArabicUI-SemiCondensedLight.ttf +NotoSansArabicUI-SemiCondensedMedium.ttf +NotoSansArabicUI-SemiCondensedSemiBold.ttf +NotoSansArabicUI-SemiCondensedThin.ttf +NotoSansArabicUI-Thin.ttf +NotoSansArabicUI[wdth,wght].ttf +NotoSansArabic[wdth,wght].ttf +NotoSansArmenian-Black.ttf +NotoSansArmenian-Bold.ttf +NotoSansArmenian-Condensed.ttf +NotoSansArmenian-CondensedBlack.ttf +NotoSansArmenian-CondensedBold.ttf +NotoSansArmenian-CondensedExtraBold.ttf +NotoSansArmenian-CondensedExtraLight.ttf +NotoSansArmenian-CondensedLight.ttf +NotoSansArmenian-CondensedMedium.ttf +NotoSansArmenian-CondensedSemiBold.ttf +NotoSansArmenian-CondensedThin.ttf +NotoSansArmenian-ExtraBold.ttf +NotoSansArmenian-ExtraCondensed.ttf +NotoSansArmenian-ExtraCondensedBlack.ttf +NotoSansArmenian-ExtraCondensedBold.ttf +NotoSansArmenian-ExtraCondensedExtraBold.ttf +NotoSansArmenian-ExtraCondensedExtraLight.ttf +NotoSansArmenian-ExtraCondensedLight.ttf +NotoSansArmenian-ExtraCondensedMedium.ttf +NotoSansArmenian-ExtraCondensedSemiBold.ttf +NotoSansArmenian-ExtraCondensedThin.ttf +NotoSansArmenian-ExtraLight.ttf +NotoSansArmenian-Light.ttf +NotoSansArmenian-Medium.ttf +NotoSansArmenian-Regular.ttf +NotoSansArmenian-SemiBold.ttf +NotoSansArmenian-SemiCondensed.ttf +NotoSansArmenian-SemiCondensedBlack.ttf +NotoSansArmenian-SemiCondensedBold.ttf +NotoSansArmenian-SemiCondensedExtraBold.ttf +NotoSansArmenian-SemiCondensedExtraLight.ttf +NotoSansArmenian-SemiCondensedLight.ttf +NotoSansArmenian-SemiCondensedMedium.ttf +NotoSansArmenian-SemiCondensedSemiBold.ttf +NotoSansArmenian-SemiCondensedThin.ttf +NotoSansArmenian-Thin.ttf +NotoSansArmenian[wdth,wght].ttf +NotoSansAvestan-Regular.ttf +NotoSansBalinese-Bold.ttf +NotoSansBalinese-Medium.ttf +NotoSansBalinese-Regular.ttf +NotoSansBalinese-SemiBold.ttf +NotoSansBalinese[wght].ttf +NotoSansBamum-Bold.ttf +NotoSansBamum-Medium.ttf +NotoSansBamum-Regular.ttf +NotoSansBamum-SemiBold.ttf +NotoSansBamum[wght].ttf +NotoSansBassaVah-Regular.ttf +NotoSansBassaVah[wght].ttf +NotoSansBatak-Regular.ttf +NotoSansBengali-Black.ttf +NotoSansBengali-Bold.ttf +NotoSansBengali-Condensed.ttf +NotoSansBengali-ExtraBold.ttf +NotoSansBengali-ExtraCondensed.ttf +NotoSansBengali-ExtraLight.ttf +NotoSansBengali-Light.ttf +NotoSansBengali-Medium.ttf +NotoSansBengali-Regular.ttf +NotoSansBengali-SemiBold.ttf +NotoSansBengali-SemiCondensed.ttf +NotoSansBengali-Thin.ttf +NotoSansBengaliUI-Black.ttf +NotoSansBengaliUI-Bold.ttf +NotoSansBengaliUI-Condensed.ttf +NotoSansBengaliUI-ExtraBold.ttf +NotoSansBengaliUI-ExtraCondensed.ttf +NotoSansBengaliUI-ExtraLight.ttf +NotoSansBengaliUI-Light.ttf +NotoSansBengaliUI-Medium.ttf +NotoSansBengaliUI-Regular.ttf +NotoSansBengaliUI-SemiBold.ttf +NotoSansBengaliUI-SemiCondensed.ttf +NotoSansBengaliUI-Thin.ttf +NotoSansBengaliUI[wdth,wght].ttf +NotoSansBengali[wdth,wght].ttf +NotoSansBhaiksuki-Regular.ttf +NotoSansBrahmi-Regular.ttf +NotoSansBuginese-Regular.ttf +NotoSansBuhid-Regular.ttf +NotoSansCanadianAboriginal-Black.ttf +NotoSansCanadianAboriginal-Bold.ttf +NotoSansCanadianAboriginal-ExtraBold.ttf +NotoSansCanadianAboriginal-ExtraLight.ttf +NotoSansCanadianAboriginal-Light.ttf +NotoSansCanadianAboriginal-Medium.ttf +NotoSansCanadianAboriginal-Regular.ttf +NotoSansCanadianAboriginal-SemiBold.ttf +NotoSansCanadianAboriginal-Thin.ttf +NotoSansCanadianAboriginal[wght].ttf +NotoSansCarian-Regular.ttf +NotoSansCaucasianAlbanian-Regular.ttf +NotoSansChakma-Regular.ttf +NotoSansCham-Black.ttf +NotoSansCham-Bold.ttf +NotoSansCham-ExtraBold.ttf +NotoSansCham-ExtraLight.ttf +NotoSansCham-Light.ttf +NotoSansCham-Medium.ttf +NotoSansCham-Regular.ttf +NotoSansCham-SemiBold.ttf +NotoSansCham-Thin.ttf +NotoSansCham[wght].ttf +NotoSansCherokee-Black.ttf +NotoSansCherokee-Bold.ttf +NotoSansCherokee-ExtraBold.ttf +NotoSansCherokee-ExtraLight.ttf +NotoSansCherokee-Light.ttf +NotoSansCherokee-Medium.ttf +NotoSansCherokee-Regular.ttf +NotoSansCherokee-SemiBold.ttf +NotoSansCherokee-Thin.ttf +NotoSansCherokee[wght].ttf +NotoSansChorasmian-Regular.ttf +NotoSansCoptic-Regular.ttf +NotoSansCuneiform-Regular.ttf +NotoSansCypriot-Regular.ttf +NotoSansDeseret-Regular.ttf +NotoSansDevanagari-Black.ttf +NotoSansDevanagari-Bold.ttf +NotoSansDevanagari-Condensed.ttf +NotoSansDevanagari-CondensedBlack.ttf +NotoSansDevanagari-CondensedBold.ttf +NotoSansDevanagari-CondensedExtraBold.ttf +NotoSansDevanagari-CondensedExtraLight.ttf +NotoSansDevanagari-CondensedLight.ttf +NotoSansDevanagari-CondensedMedium.ttf +NotoSansDevanagari-CondensedSemiBold.ttf +NotoSansDevanagari-CondensedThin.ttf +NotoSansDevanagari-ExtraBold.ttf +NotoSansDevanagari-ExtraCondensed.ttf +NotoSansDevanagari-ExtraCondensedBlack.ttf +NotoSansDevanagari-ExtraCondensedBold.ttf +NotoSansDevanagari-ExtraCondensedExtraBold.ttf +NotoSansDevanagari-ExtraCondensedExtraLight.ttf +NotoSansDevanagari-ExtraCondensedLight.ttf +NotoSansDevanagari-ExtraCondensedMedium.ttf +NotoSansDevanagari-ExtraCondensedSemiBold.ttf +NotoSansDevanagari-ExtraCondensedThin.ttf +NotoSansDevanagari-ExtraLight.ttf +NotoSansDevanagari-Light.ttf +NotoSansDevanagari-Medium.ttf +NotoSansDevanagari-Regular.ttf +NotoSansDevanagari-SemiBold.ttf +NotoSansDevanagari-SemiCondensed.ttf +NotoSansDevanagari-SemiCondensedBlack.ttf +NotoSansDevanagari-SemiCondensedBold.ttf +NotoSansDevanagari-SemiCondensedExtraBold.ttf +NotoSansDevanagari-SemiCondensedExtraLight.ttf +NotoSansDevanagari-SemiCondensedLight.ttf +NotoSansDevanagari-SemiCondensedMedium.ttf +NotoSansDevanagari-SemiCondensedSemiBold.ttf +NotoSansDevanagari-SemiCondensedThin.ttf +NotoSansDevanagari-Thin.ttf +NotoSansDevanagariUI-Black.ttf +NotoSansDevanagariUI-Bold.ttf +NotoSansDevanagariUI-Condensed.ttf +NotoSansDevanagariUI-CondensedBlack.ttf +NotoSansDevanagariUI-CondensedBold.ttf +NotoSansDevanagariUI-CondensedExtraBold.ttf +NotoSansDevanagariUI-CondensedExtraLight.ttf +NotoSansDevanagariUI-CondensedLight.ttf +NotoSansDevanagariUI-CondensedMedium.ttf +NotoSansDevanagariUI-CondensedSemiBold.ttf +NotoSansDevanagariUI-CondensedThin.ttf +NotoSansDevanagariUI-ExtraBold.ttf +NotoSansDevanagariUI-ExtraCondensed.ttf +NotoSansDevanagariUI-ExtraCondensedBlack.ttf +NotoSansDevanagariUI-ExtraCondensedBold.ttf +NotoSansDevanagariUI-ExtraCondensedExtraBold.ttf +NotoSansDevanagariUI-ExtraCondensedExtraLight.ttf +NotoSansDevanagariUI-ExtraCondensedLight.ttf +NotoSansDevanagariUI-ExtraCondensedMedium.ttf +NotoSansDevanagariUI-ExtraCondensedSemiBold.ttf +NotoSansDevanagariUI-ExtraCondensedThin.ttf +NotoSansDevanagariUI-ExtraLight.ttf +NotoSansDevanagariUI-Light.ttf +NotoSansDevanagariUI-Medium.ttf +NotoSansDevanagariUI-Regular.ttf +NotoSansDevanagariUI-SemiBold.ttf +NotoSansDevanagariUI-SemiCondensed.ttf +NotoSansDevanagariUI-SemiCondensedBlack.ttf +NotoSansDevanagariUI-SemiCondensedBold.ttf +NotoSansDevanagariUI-SemiCondensedExtraBold.ttf +NotoSansDevanagariUI-SemiCondensedExtraLight.ttf +NotoSansDevanagariUI-SemiCondensedLight.ttf +NotoSansDevanagariUI-SemiCondensedMedium.ttf +NotoSansDevanagariUI-SemiCondensedSemiBold.ttf +NotoSansDevanagariUI-SemiCondensedThin.ttf +NotoSansDevanagariUI-Thin.ttf +NotoSansDevanagari[wdth,wght].ttf +NotoSansDisplay-Black.ttf +NotoSansDisplay-BlackItalic.ttf +NotoSansDisplay-Bold.ttf +NotoSansDisplay-BoldItalic.ttf +NotoSansDisplay-Condensed.ttf +NotoSansDisplay-CondensedBlack.ttf +NotoSansDisplay-CondensedBlackItalic.ttf +NotoSansDisplay-CondensedBold.ttf +NotoSansDisplay-CondensedBoldItalic.ttf +NotoSansDisplay-CondensedExtraBold.ttf +NotoSansDisplay-CondensedExtraBoldItalic.ttf +NotoSansDisplay-CondensedExtraLight.ttf +NotoSansDisplay-CondensedExtraLightItalic.ttf +NotoSansDisplay-CondensedItalic.ttf +NotoSansDisplay-CondensedLight.ttf +NotoSansDisplay-CondensedLightItalic.ttf +NotoSansDisplay-CondensedMedium.ttf +NotoSansDisplay-CondensedMediumItalic.ttf +NotoSansDisplay-CondensedSemiBold.ttf +NotoSansDisplay-CondensedSemiBoldItalic.ttf +NotoSansDisplay-CondensedThin.ttf +NotoSansDisplay-CondensedThinItalic.ttf +NotoSansDisplay-ExtraBold.ttf +NotoSansDisplay-ExtraBoldItalic.ttf +NotoSansDisplay-ExtraCondensed.ttf +NotoSansDisplay-ExtraCondensedBlack.ttf +NotoSansDisplay-ExtraCondensedBlackItalic.ttf +NotoSansDisplay-ExtraCondensedBold.ttf +NotoSansDisplay-ExtraCondensedBoldItalic.ttf +NotoSansDisplay-ExtraCondensedExtraBold.ttf +NotoSansDisplay-ExtraCondensedExtraBoldItalic.ttf +NotoSansDisplay-ExtraCondensedExtraLight.ttf +NotoSansDisplay-ExtraCondensedExtraLightItalic.ttf +NotoSansDisplay-ExtraCondensedItalic.ttf +NotoSansDisplay-ExtraCondensedLight.ttf +NotoSansDisplay-ExtraCondensedLightItalic.ttf +NotoSansDisplay-ExtraCondensedMedium.ttf +NotoSansDisplay-ExtraCondensedMediumItalic.ttf +NotoSansDisplay-ExtraCondensedSemiBold.ttf +NotoSansDisplay-ExtraCondensedSemiBoldItalic.ttf +NotoSansDisplay-ExtraCondensedThin.ttf +NotoSansDisplay-ExtraCondensedThinItalic.ttf +NotoSansDisplay-ExtraLight.ttf +NotoSansDisplay-ExtraLightItalic.ttf +NotoSansDisplay-Italic.ttf +NotoSansDisplay-Italic[wdth,wght].ttf +NotoSansDisplay-Light.ttf +NotoSansDisplay-LightItalic.ttf +NotoSansDisplay-Medium.ttf +NotoSansDisplay-MediumItalic.ttf +NotoSansDisplay-Regular.ttf +NotoSansDisplay-SemiBold.ttf +NotoSansDisplay-SemiBoldItalic.ttf +NotoSansDisplay-SemiCondensed.ttf +NotoSansDisplay-SemiCondensedBlack.ttf +NotoSansDisplay-SemiCondensedBlackItalic.ttf +NotoSansDisplay-SemiCondensedBold.ttf +NotoSansDisplay-SemiCondensedBoldItalic.ttf +NotoSansDisplay-SemiCondensedExtraBold.ttf +NotoSansDisplay-SemiCondensedExtraBoldItalic.ttf +NotoSansDisplay-SemiCondensedExtraLight.ttf +NotoSansDisplay-SemiCondensedExtraLightItalic.ttf +NotoSansDisplay-SemiCondensedItalic.ttf +NotoSansDisplay-SemiCondensedLight.ttf +NotoSansDisplay-SemiCondensedLightItalic.ttf +NotoSansDisplay-SemiCondensedMedium.ttf +NotoSansDisplay-SemiCondensedMediumItalic.ttf +NotoSansDisplay-SemiCondensedSemiBold.ttf +NotoSansDisplay-SemiCondensedSemiBoldItalic.ttf +NotoSansDisplay-SemiCondensedThin.ttf +NotoSansDisplay-SemiCondensedThinItalic.ttf +NotoSansDisplay-Thin.ttf +NotoSansDisplay-ThinItalic.ttf +NotoSansDisplay[wdth,wght].ttf +NotoSansDuployan-Regular.ttf +NotoSansEgyptianHieroglyphs-Regular.ttf +NotoSansElbasan-Regular.ttf +NotoSansElymaic-Regular.ttf +NotoSansEthiopic-Black.ttf +NotoSansEthiopic-Bold.ttf +NotoSansEthiopic-Condensed.ttf +NotoSansEthiopic-CondensedBlack.ttf +NotoSansEthiopic-CondensedBold.ttf +NotoSansEthiopic-CondensedExtraBold.ttf +NotoSansEthiopic-CondensedExtraLight.ttf +NotoSansEthiopic-CondensedLight.ttf +NotoSansEthiopic-CondensedMedium.ttf +NotoSansEthiopic-CondensedSemiBold.ttf +NotoSansEthiopic-CondensedThin.ttf +NotoSansEthiopic-ExtraBold.ttf +NotoSansEthiopic-ExtraCondensed.ttf +NotoSansEthiopic-ExtraCondensedBlack.ttf +NotoSansEthiopic-ExtraCondensedBold.ttf +NotoSansEthiopic-ExtraCondensedExtraBold.ttf +NotoSansEthiopic-ExtraCondensedExtraLight.ttf +NotoSansEthiopic-ExtraCondensedLight.ttf +NotoSansEthiopic-ExtraCondensedMedium.ttf +NotoSansEthiopic-ExtraCondensedSemiBold.ttf +NotoSansEthiopic-ExtraCondensedThin.ttf +NotoSansEthiopic-ExtraLight.ttf +NotoSansEthiopic-Light.ttf +NotoSansEthiopic-Medium.ttf +NotoSansEthiopic-Regular.ttf +NotoSansEthiopic-SemiBold.ttf +NotoSansEthiopic-SemiCondensed.ttf +NotoSansEthiopic-SemiCondensedBlack.ttf +NotoSansEthiopic-SemiCondensedBold.ttf +NotoSansEthiopic-SemiCondensedExtraBold.ttf +NotoSansEthiopic-SemiCondensedExtraLight.ttf +NotoSansEthiopic-SemiCondensedLight.ttf +NotoSansEthiopic-SemiCondensedMedium.ttf +NotoSansEthiopic-SemiCondensedSemiBold.ttf +NotoSansEthiopic-SemiCondensedThin.ttf +NotoSansEthiopic-Thin.ttf +NotoSansEthiopic[wdth,wght].ttf +NotoSansGeorgian-Black.ttf +NotoSansGeorgian-Bold.ttf +NotoSansGeorgian-Condensed.ttf +NotoSansGeorgian-CondensedBlack.ttf +NotoSansGeorgian-CondensedBold.ttf +NotoSansGeorgian-CondensedExtraBold.ttf +NotoSansGeorgian-CondensedExtraLight.ttf +NotoSansGeorgian-CondensedLight.ttf +NotoSansGeorgian-CondensedMedium.ttf +NotoSansGeorgian-CondensedSemiBold.ttf +NotoSansGeorgian-CondensedThin.ttf +NotoSansGeorgian-ExtraBold.ttf +NotoSansGeorgian-ExtraCondensed.ttf +NotoSansGeorgian-ExtraCondensedBlack.ttf +NotoSansGeorgian-ExtraCondensedBold.ttf +NotoSansGeorgian-ExtraCondensedExtraBold.ttf +NotoSansGeorgian-ExtraCondensedExtraLight.ttf +NotoSansGeorgian-ExtraCondensedLight.ttf +NotoSansGeorgian-ExtraCondensedMedium.ttf +NotoSansGeorgian-ExtraCondensedSemiBold.ttf +NotoSansGeorgian-ExtraCondensedThin.ttf +NotoSansGeorgian-ExtraLight.ttf +NotoSansGeorgian-Light.ttf +NotoSansGeorgian-Medium.ttf +NotoSansGeorgian-Regular.ttf +NotoSansGeorgian-SemiBold.ttf +NotoSansGeorgian-SemiCondensed.ttf +NotoSansGeorgian-SemiCondensedBlack.ttf +NotoSansGeorgian-SemiCondensedBold.ttf +NotoSansGeorgian-SemiCondensedExtraBold.ttf +NotoSansGeorgian-SemiCondensedExtraLight.ttf +NotoSansGeorgian-SemiCondensedLight.ttf +NotoSansGeorgian-SemiCondensedMedium.ttf +NotoSansGeorgian-SemiCondensedSemiBold.ttf +NotoSansGeorgian-SemiCondensedThin.ttf +NotoSansGeorgian-Thin.ttf +NotoSansGeorgian[wdth,wght].ttf +NotoSansGlagolitic-Regular.ttf +NotoSansGothic-Regular.ttf +NotoSansGrantha-Regular.ttf +NotoSansGujarati-Black.ttf +NotoSansGujarati-Bold.ttf +NotoSansGujarati-Condensed.ttf +NotoSansGujarati-CondensedBlack.ttf +NotoSansGujarati-CondensedBold.ttf +NotoSansGujarati-CondensedExtraBold.ttf +NotoSansGujarati-CondensedExtraLight.ttf +NotoSansGujarati-CondensedLight.ttf +NotoSansGujarati-CondensedMedium.ttf +NotoSansGujarati-CondensedSemiBold.ttf +NotoSansGujarati-CondensedThin.ttf +NotoSansGujarati-ExtraBold.ttf +NotoSansGujarati-ExtraCondensed.ttf +NotoSansGujarati-ExtraCondensedBlack.ttf +NotoSansGujarati-ExtraCondensedBold.ttf +NotoSansGujarati-ExtraCondensedExtraBold.ttf +NotoSansGujarati-ExtraCondensedExtraLight.ttf +NotoSansGujarati-ExtraCondensedLight.ttf +NotoSansGujarati-ExtraCondensedMedium.ttf +NotoSansGujarati-ExtraCondensedSemiBold.ttf +NotoSansGujarati-ExtraCondensedThin.ttf +NotoSansGujarati-ExtraLight.ttf +NotoSansGujarati-Light.ttf +NotoSansGujarati-Medium.ttf +NotoSansGujarati-Regular.ttf +NotoSansGujarati-SemiBold.ttf +NotoSansGujarati-SemiCondensed.ttf +NotoSansGujarati-SemiCondensedBlack.ttf +NotoSansGujarati-SemiCondensedBold.ttf +NotoSansGujarati-SemiCondensedExtraBold.ttf +NotoSansGujarati-SemiCondensedExtraLight.ttf +NotoSansGujarati-SemiCondensedLight.ttf +NotoSansGujarati-SemiCondensedMedium.ttf +NotoSansGujarati-SemiCondensedSemiBold.ttf +NotoSansGujarati-SemiCondensedThin.ttf +NotoSansGujarati-Thin.ttf +NotoSansGujaratiUI-Black.ttf +NotoSansGujaratiUI-Bold.ttf +NotoSansGujaratiUI-Condensed.ttf +NotoSansGujaratiUI-CondensedBlack.ttf +NotoSansGujaratiUI-CondensedBold.ttf +NotoSansGujaratiUI-CondensedExtraBold.ttf +NotoSansGujaratiUI-CondensedExtraLight.ttf +NotoSansGujaratiUI-CondensedLight.ttf +NotoSansGujaratiUI-CondensedMedium.ttf +NotoSansGujaratiUI-CondensedSemiBold.ttf +NotoSansGujaratiUI-CondensedThin.ttf +NotoSansGujaratiUI-ExtraBold.ttf +NotoSansGujaratiUI-ExtraCondensed.ttf +NotoSansGujaratiUI-ExtraCondensedBlack.ttf +NotoSansGujaratiUI-ExtraCondensedBold.ttf +NotoSansGujaratiUI-ExtraCondensedExtraBold.ttf +NotoSansGujaratiUI-ExtraCondensedExtraLight.ttf +NotoSansGujaratiUI-ExtraCondensedLight.ttf +NotoSansGujaratiUI-ExtraCondensedMedium.ttf +NotoSansGujaratiUI-ExtraCondensedSemiBold.ttf +NotoSansGujaratiUI-ExtraCondensedThin.ttf +NotoSansGujaratiUI-ExtraLight.ttf +NotoSansGujaratiUI-Light.ttf +NotoSansGujaratiUI-Medium.ttf +NotoSansGujaratiUI-Regular.ttf +NotoSansGujaratiUI-SemiBold.ttf +NotoSansGujaratiUI-SemiCondensed.ttf +NotoSansGujaratiUI-SemiCondensedBlack.ttf +NotoSansGujaratiUI-SemiCondensedBold.ttf +NotoSansGujaratiUI-SemiCondensedExtraBold.ttf +NotoSansGujaratiUI-SemiCondensedExtraLight.ttf +NotoSansGujaratiUI-SemiCondensedLight.ttf +NotoSansGujaratiUI-SemiCondensedMedium.ttf +NotoSansGujaratiUI-SemiCondensedSemiBold.ttf +NotoSansGujaratiUI-SemiCondensedThin.ttf +NotoSansGujaratiUI-Thin.ttf +NotoSansGujarati[wdth,wght].ttf +NotoSansGunjalaGondi-Regular.ttf +NotoSansGurmukhi-Black.ttf +NotoSansGurmukhi-Bold.ttf +NotoSansGurmukhi-Condensed.ttf +NotoSansGurmukhi-CondensedBlack.ttf +NotoSansGurmukhi-CondensedBold.ttf +NotoSansGurmukhi-CondensedExtraBold.ttf +NotoSansGurmukhi-CondensedExtraLight.ttf +NotoSansGurmukhi-CondensedLight.ttf +NotoSansGurmukhi-CondensedMedium.ttf +NotoSansGurmukhi-CondensedSemiBold.ttf +NotoSansGurmukhi-CondensedThin.ttf +NotoSansGurmukhi-ExtraBold.ttf +NotoSansGurmukhi-ExtraCondensed.ttf +NotoSansGurmukhi-ExtraCondensedBlack.ttf +NotoSansGurmukhi-ExtraCondensedBold.ttf +NotoSansGurmukhi-ExtraCondensedExtraBold.ttf +NotoSansGurmukhi-ExtraCondensedExtraLight.ttf +NotoSansGurmukhi-ExtraCondensedLight.ttf +NotoSansGurmukhi-ExtraCondensedMedium.ttf +NotoSansGurmukhi-ExtraCondensedSemiBold.ttf +NotoSansGurmukhi-ExtraCondensedThin.ttf +NotoSansGurmukhi-ExtraLight.ttf +NotoSansGurmukhi-Light.ttf +NotoSansGurmukhi-Medium.ttf +NotoSansGurmukhi-Regular.ttf +NotoSansGurmukhi-SemiBold.ttf +NotoSansGurmukhi-SemiCondensed.ttf +NotoSansGurmukhi-SemiCondensedBlack.ttf +NotoSansGurmukhi-SemiCondensedBold.ttf +NotoSansGurmukhi-SemiCondensedExtraBold.ttf +NotoSansGurmukhi-SemiCondensedExtraLight.ttf +NotoSansGurmukhi-SemiCondensedLight.ttf +NotoSansGurmukhi-SemiCondensedMedium.ttf +NotoSansGurmukhi-SemiCondensedSemiBold.ttf +NotoSansGurmukhi-SemiCondensedThin.ttf +NotoSansGurmukhi-Thin.ttf +NotoSansGurmukhiUI-Black.ttf +NotoSansGurmukhiUI-Bold.ttf +NotoSansGurmukhiUI-Condensed.ttf +NotoSansGurmukhiUI-CondensedBlack.ttf +NotoSansGurmukhiUI-CondensedBold.ttf +NotoSansGurmukhiUI-CondensedExtraBold.ttf +NotoSansGurmukhiUI-CondensedExtraLight.ttf +NotoSansGurmukhiUI-CondensedLight.ttf +NotoSansGurmukhiUI-CondensedMedium.ttf +NotoSansGurmukhiUI-CondensedSemiBold.ttf +NotoSansGurmukhiUI-CondensedThin.ttf +NotoSansGurmukhiUI-ExtraBold.ttf +NotoSansGurmukhiUI-ExtraCondensed.ttf +NotoSansGurmukhiUI-ExtraCondensedBlack.ttf +NotoSansGurmukhiUI-ExtraCondensedBold.ttf +NotoSansGurmukhiUI-ExtraCondensedExtraBold.ttf +NotoSansGurmukhiUI-ExtraCondensedExtraLight.ttf +NotoSansGurmukhiUI-ExtraCondensedLight.ttf +NotoSansGurmukhiUI-ExtraCondensedMedium.ttf +NotoSansGurmukhiUI-ExtraCondensedSemiBold.ttf +NotoSansGurmukhiUI-ExtraCondensedThin.ttf +NotoSansGurmukhiUI-ExtraLight.ttf +NotoSansGurmukhiUI-Light.ttf +NotoSansGurmukhiUI-Medium.ttf +NotoSansGurmukhiUI-Regular.ttf +NotoSansGurmukhiUI-SemiBold.ttf +NotoSansGurmukhiUI-SemiCondensed.ttf +NotoSansGurmukhiUI-SemiCondensedBlack.ttf +NotoSansGurmukhiUI-SemiCondensedBold.ttf +NotoSansGurmukhiUI-SemiCondensedExtraBold.ttf +NotoSansGurmukhiUI-SemiCondensedExtraLight.ttf +NotoSansGurmukhiUI-SemiCondensedLight.ttf +NotoSansGurmukhiUI-SemiCondensedMedium.ttf +NotoSansGurmukhiUI-SemiCondensedSemiBold.ttf +NotoSansGurmukhiUI-SemiCondensedThin.ttf +NotoSansGurmukhiUI-Thin.ttf +NotoSansGurmukhiUI[wdth,wght].ttf +NotoSansGurmukhi[wdth,wght].ttf +NotoSansHK[wght].ttf +NotoSansHanifiRohingya-Bold.ttf +NotoSansHanifiRohingya-Medium.ttf +NotoSansHanifiRohingya-Regular.ttf +NotoSansHanifiRohingya-SemiBold.ttf +NotoSansHanifiRohingya[wght].ttf +NotoSansHanunoo-Regular.ttf +NotoSansHatran-Regular.ttf +NotoSansHebrew-Black.ttf +NotoSansHebrew-Bold.ttf +NotoSansHebrew-Condensed.ttf +NotoSansHebrew-CondensedBlack.ttf +NotoSansHebrew-CondensedBold.ttf +NotoSansHebrew-CondensedExtraBold.ttf +NotoSansHebrew-CondensedExtraLight.ttf +NotoSansHebrew-CondensedLight.ttf +NotoSansHebrew-CondensedMedium.ttf +NotoSansHebrew-CondensedSemiBold.ttf +NotoSansHebrew-CondensedThin.ttf +NotoSansHebrew-ExtraBold.ttf +NotoSansHebrew-ExtraCondensed.ttf +NotoSansHebrew-ExtraCondensedBlack.ttf +NotoSansHebrew-ExtraCondensedBold.ttf +NotoSansHebrew-ExtraCondensedExtraBold.ttf +NotoSansHebrew-ExtraCondensedExtraLight.ttf +NotoSansHebrew-ExtraCondensedLight.ttf +NotoSansHebrew-ExtraCondensedMedium.ttf +NotoSansHebrew-ExtraCondensedSemiBold.ttf +NotoSansHebrew-ExtraCondensedThin.ttf +NotoSansHebrew-ExtraLight.ttf +NotoSansHebrew-Light.ttf +NotoSansHebrew-Medium.ttf +NotoSansHebrew-Regular.ttf +NotoSansHebrew-SemiBold.ttf +NotoSansHebrew-SemiCondensed.ttf +NotoSansHebrew-SemiCondensedBlack.ttf +NotoSansHebrew-SemiCondensedBold.ttf +NotoSansHebrew-SemiCondensedExtraBold.ttf +NotoSansHebrew-SemiCondensedExtraLight.ttf +NotoSansHebrew-SemiCondensedLight.ttf +NotoSansHebrew-SemiCondensedMedium.ttf +NotoSansHebrew-SemiCondensedSemiBold.ttf +NotoSansHebrew-SemiCondensedThin.ttf +NotoSansHebrew-Thin.ttf +NotoSansHebrew[wdth,wght].ttf +NotoSansImperialAramaic-Regular.ttf +NotoSansIndicSiyaqNumbers-Regular.ttf +NotoSansInscriptionalPahlavi-Regular.ttf +NotoSansInscriptionalParthian-Regular.ttf +NotoSansJP[wght].ttf +NotoSansJavanese-Bold.ttf +NotoSansJavanese-Regular.ttf +NotoSansJavanese[wght].ttf +NotoSansKR[wght].ttf +NotoSansKaithi-Regular.ttf +NotoSansKannada-Black.ttf +NotoSansKannada-Bold.ttf +NotoSansKannada-Condensed.ttf +NotoSansKannada-CondensedBlack.ttf +NotoSansKannada-CondensedBold.ttf +NotoSansKannada-CondensedExtraBold.ttf +NotoSansKannada-CondensedExtraLight.ttf +NotoSansKannada-CondensedLight.ttf +NotoSansKannada-CondensedMedium.ttf +NotoSansKannada-CondensedSemiBold.ttf +NotoSansKannada-CondensedThin.ttf +NotoSansKannada-ExtraBold.ttf +NotoSansKannada-ExtraCondensed.ttf +NotoSansKannada-ExtraCondensedBlack.ttf +NotoSansKannada-ExtraCondensedBold.ttf +NotoSansKannada-ExtraCondensedExtraBold.ttf +NotoSansKannada-ExtraCondensedExtraLight.ttf +NotoSansKannada-ExtraCondensedLight.ttf +NotoSansKannada-ExtraCondensedMedium.ttf +NotoSansKannada-ExtraCondensedSemiBold.ttf +NotoSansKannada-ExtraCondensedThin.ttf +NotoSansKannada-ExtraLight.ttf +NotoSansKannada-Light.ttf +NotoSansKannada-Medium.ttf +NotoSansKannada-Regular.ttf +NotoSansKannada-SemiBold.ttf +NotoSansKannada-SemiCondensed.ttf +NotoSansKannada-SemiCondensedBlack.ttf +NotoSansKannada-SemiCondensedBold.ttf +NotoSansKannada-SemiCondensedExtraBold.ttf +NotoSansKannada-SemiCondensedExtraLight.ttf +NotoSansKannada-SemiCondensedLight.ttf +NotoSansKannada-SemiCondensedMedium.ttf +NotoSansKannada-SemiCondensedSemiBold.ttf +NotoSansKannada-SemiCondensedThin.ttf +NotoSansKannada-Thin.ttf +NotoSansKannadaUI-Black.ttf +NotoSansKannadaUI-Bold.ttf +NotoSansKannadaUI-Condensed.ttf +NotoSansKannadaUI-CondensedBlack.ttf +NotoSansKannadaUI-CondensedBold.ttf +NotoSansKannadaUI-CondensedExtraBold.ttf +NotoSansKannadaUI-CondensedExtraLight.ttf +NotoSansKannadaUI-CondensedLight.ttf +NotoSansKannadaUI-CondensedMedium.ttf +NotoSansKannadaUI-CondensedSemiBold.ttf +NotoSansKannadaUI-CondensedThin.ttf +NotoSansKannadaUI-ExtraBold.ttf +NotoSansKannadaUI-ExtraCondensed.ttf +NotoSansKannadaUI-ExtraCondensedBlack.ttf +NotoSansKannadaUI-ExtraCondensedBold.ttf +NotoSansKannadaUI-ExtraCondensedExtraBold.ttf +NotoSansKannadaUI-ExtraCondensedExtraLight.ttf +NotoSansKannadaUI-ExtraCondensedLight.ttf +NotoSansKannadaUI-ExtraCondensedMedium.ttf +NotoSansKannadaUI-ExtraCondensedSemiBold.ttf +NotoSansKannadaUI-ExtraCondensedThin.ttf +NotoSansKannadaUI-ExtraLight.ttf +NotoSansKannadaUI-Light.ttf +NotoSansKannadaUI-Medium.ttf +NotoSansKannadaUI-Regular.ttf +NotoSansKannadaUI-SemiBold.ttf +NotoSansKannadaUI-SemiCondensed.ttf +NotoSansKannadaUI-SemiCondensedBlack.ttf +NotoSansKannadaUI-SemiCondensedBold.ttf +NotoSansKannadaUI-SemiCondensedExtraBold.ttf +NotoSansKannadaUI-SemiCondensedExtraLight.ttf +NotoSansKannadaUI-SemiCondensedLight.ttf +NotoSansKannadaUI-SemiCondensedMedium.ttf +NotoSansKannadaUI-SemiCondensedSemiBold.ttf +NotoSansKannadaUI-SemiCondensedThin.ttf +NotoSansKannadaUI-Thin.ttf +NotoSansKannadaUI[wdth,wght].ttf +NotoSansKannada[wdth,wght].ttf +NotoSansKayahLi-Bold.ttf +NotoSansKayahLi-Medium.ttf +NotoSansKayahLi-Regular.ttf +NotoSansKayahLi-SemiBold.ttf +NotoSansKayahLi[wght].ttf +NotoSansKharoshthi-Regular.ttf +NotoSansKhmer-Black.ttf +NotoSansKhmer-Bold.ttf +NotoSansKhmer-Condensed.ttf +NotoSansKhmer-CondensedBlack.ttf +NotoSansKhmer-CondensedBold.ttf +NotoSansKhmer-CondensedExtraBold.ttf +NotoSansKhmer-CondensedExtraLight.ttf +NotoSansKhmer-CondensedLight.ttf +NotoSansKhmer-CondensedMedium.ttf +NotoSansKhmer-CondensedSemiBold.ttf +NotoSansKhmer-CondensedThin.ttf +NotoSansKhmer-ExtraBold.ttf +NotoSansKhmer-ExtraCondensed.ttf +NotoSansKhmer-ExtraCondensedBlack.ttf +NotoSansKhmer-ExtraCondensedBold.ttf +NotoSansKhmer-ExtraCondensedExtraBold.ttf +NotoSansKhmer-ExtraCondensedExtraLight.ttf +NotoSansKhmer-ExtraCondensedLight.ttf +NotoSansKhmer-ExtraCondensedMedium.ttf +NotoSansKhmer-ExtraCondensedSemiBold.ttf +NotoSansKhmer-ExtraCondensedThin.ttf +NotoSansKhmer-ExtraLight.ttf +NotoSansKhmer-Light.ttf +NotoSansKhmer-Medium.ttf +NotoSansKhmer-Regular.ttf +NotoSansKhmer-SemiBold.ttf +NotoSansKhmer-SemiCondensed.ttf +NotoSansKhmer-SemiCondensedBlack.ttf +NotoSansKhmer-SemiCondensedBold.ttf +NotoSansKhmer-SemiCondensedExtraBold.ttf +NotoSansKhmer-SemiCondensedExtraLight.ttf +NotoSansKhmer-SemiCondensedLight.ttf +NotoSansKhmer-SemiCondensedMedium.ttf +NotoSansKhmer-SemiCondensedSemiBold.ttf +NotoSansKhmer-SemiCondensedThin.ttf +NotoSansKhmer-Thin.ttf +NotoSansKhmerUI-Black.ttf +NotoSansKhmerUI-Bold.ttf +NotoSansKhmerUI-Condensed.ttf +NotoSansKhmerUI-CondensedBlack.ttf +NotoSansKhmerUI-CondensedBold.ttf +NotoSansKhmerUI-CondensedExtraBold.ttf +NotoSansKhmerUI-CondensedExtraLight.ttf +NotoSansKhmerUI-CondensedLight.ttf +NotoSansKhmerUI-CondensedMedium.ttf +NotoSansKhmerUI-CondensedSemiBold.ttf +NotoSansKhmerUI-CondensedThin.ttf +NotoSansKhmerUI-ExtraBold.ttf +NotoSansKhmerUI-ExtraCondensed.ttf +NotoSansKhmerUI-ExtraCondensedBlack.ttf +NotoSansKhmerUI-ExtraCondensedBold.ttf +NotoSansKhmerUI-ExtraCondensedExtraBold.ttf +NotoSansKhmerUI-ExtraCondensedExtraLight.ttf +NotoSansKhmerUI-ExtraCondensedLight.ttf +NotoSansKhmerUI-ExtraCondensedMedium.ttf +NotoSansKhmerUI-ExtraCondensedSemiBold.ttf +NotoSansKhmerUI-ExtraCondensedThin.ttf +NotoSansKhmerUI-ExtraLight.ttf +NotoSansKhmerUI-Light.ttf +NotoSansKhmerUI-Medium.ttf +NotoSansKhmerUI-Regular.ttf +NotoSansKhmerUI-SemiBold.ttf +NotoSansKhmerUI-SemiCondensed.ttf +NotoSansKhmerUI-SemiCondensedBlack.ttf +NotoSansKhmerUI-SemiCondensedBold.ttf +NotoSansKhmerUI-SemiCondensedExtraBold.ttf +NotoSansKhmerUI-SemiCondensedExtraLight.ttf +NotoSansKhmerUI-SemiCondensedLight.ttf +NotoSansKhmerUI-SemiCondensedMedium.ttf +NotoSansKhmerUI-SemiCondensedSemiBold.ttf +NotoSansKhmerUI-SemiCondensedThin.ttf +NotoSansKhmerUI-Thin.ttf +NotoSansKhmerUI[wdth,wght].ttf +NotoSansKhmer[wdth,wght].ttf +NotoSansKhojki-Regular.ttf +NotoSansKhudawadi-Regular.ttf +NotoSansLao-Black.ttf +NotoSansLao-Bold.ttf +NotoSansLao-Condensed.ttf +NotoSansLao-CondensedBlack.ttf +NotoSansLao-CondensedBold.ttf +NotoSansLao-CondensedExtraBold.ttf +NotoSansLao-CondensedExtraLight.ttf +NotoSansLao-CondensedLight.ttf +NotoSansLao-CondensedMedium.ttf +NotoSansLao-CondensedSemiBold.ttf +NotoSansLao-CondensedThin.ttf +NotoSansLao-ExtraBold.ttf +NotoSansLao-ExtraCondensed.ttf +NotoSansLao-ExtraCondensedBlack.ttf +NotoSansLao-ExtraCondensedBold.ttf +NotoSansLao-ExtraCondensedExtraBold.ttf +NotoSansLao-ExtraCondensedExtraLight.ttf +NotoSansLao-ExtraCondensedLight.ttf +NotoSansLao-ExtraCondensedMedium.ttf +NotoSansLao-ExtraCondensedSemiBold.ttf +NotoSansLao-ExtraCondensedThin.ttf +NotoSansLao-ExtraLight.ttf +NotoSansLao-Light.ttf +NotoSansLao-Medium.ttf +NotoSansLao-Regular.ttf +NotoSansLao-SemiBold.ttf +NotoSansLao-SemiCondensed.ttf +NotoSansLao-SemiCondensedBlack.ttf +NotoSansLao-SemiCondensedBold.ttf +NotoSansLao-SemiCondensedExtraBold.ttf +NotoSansLao-SemiCondensedExtraLight.ttf +NotoSansLao-SemiCondensedLight.ttf +NotoSansLao-SemiCondensedMedium.ttf +NotoSansLao-SemiCondensedSemiBold.ttf +NotoSansLao-SemiCondensedThin.ttf +NotoSansLao-Thin.ttf +NotoSansLaoLooped[wdth,wght].ttf +NotoSansLaoUI-Black.ttf +NotoSansLaoUI-Bold.ttf +NotoSansLaoUI-Condensed.ttf +NotoSansLaoUI-CondensedBlack.ttf +NotoSansLaoUI-CondensedBold.ttf +NotoSansLaoUI-CondensedExtraBold.ttf +NotoSansLaoUI-CondensedExtraLight.ttf +NotoSansLaoUI-CondensedLight.ttf +NotoSansLaoUI-CondensedMedium.ttf +NotoSansLaoUI-CondensedSemiBold.ttf +NotoSansLaoUI-CondensedThin.ttf +NotoSansLaoUI-ExtraBold.ttf +NotoSansLaoUI-ExtraCondensed.ttf +NotoSansLaoUI-ExtraCondensedBlack.ttf +NotoSansLaoUI-ExtraCondensedBold.ttf +NotoSansLaoUI-ExtraCondensedExtraBold.ttf +NotoSansLaoUI-ExtraCondensedExtraLight.ttf +NotoSansLaoUI-ExtraCondensedLight.ttf +NotoSansLaoUI-ExtraCondensedMedium.ttf +NotoSansLaoUI-ExtraCondensedSemiBold.ttf +NotoSansLaoUI-ExtraCondensedThin.ttf +NotoSansLaoUI-ExtraLight.ttf +NotoSansLaoUI-Light.ttf +NotoSansLaoUI-Medium.ttf +NotoSansLaoUI-Regular.ttf +NotoSansLaoUI-SemiBold.ttf +NotoSansLaoUI-SemiCondensed.ttf +NotoSansLaoUI-SemiCondensedBlack.ttf +NotoSansLaoUI-SemiCondensedBold.ttf +NotoSansLaoUI-SemiCondensedExtraBold.ttf +NotoSansLaoUI-SemiCondensedExtraLight.ttf +NotoSansLaoUI-SemiCondensedLight.ttf +NotoSansLaoUI-SemiCondensedMedium.ttf +NotoSansLaoUI-SemiCondensedSemiBold.ttf +NotoSansLaoUI-SemiCondensedThin.ttf +NotoSansLaoUI-Thin.ttf +NotoSansLaoUI[wdth,wght].ttf +NotoSansLao[wdth,wght].ttf +NotoSansLepcha-Regular.ttf +NotoSansLimbu-Regular.ttf +NotoSansLinearA-Regular.ttf +NotoSansLinearB-Regular.ttf +NotoSansLisu-Bold.ttf +NotoSansLisu-Medium.ttf +NotoSansLisu-Regular.ttf +NotoSansLisu-SemiBold.ttf +NotoSansLisu[wght].ttf +NotoSansLycian-Regular.ttf +NotoSansLydian-Regular.ttf +NotoSansMahajani-Regular.ttf +NotoSansMalayalam-Black.ttf +NotoSansMalayalam-Bold.ttf +NotoSansMalayalam-Condensed.ttf +NotoSansMalayalam-CondensedBlack.ttf +NotoSansMalayalam-CondensedBold.ttf +NotoSansMalayalam-CondensedExtraBold.ttf +NotoSansMalayalam-CondensedExtraLight.ttf +NotoSansMalayalam-CondensedLight.ttf +NotoSansMalayalam-CondensedMedium.ttf +NotoSansMalayalam-CondensedSemiBold.ttf +NotoSansMalayalam-CondensedThin.ttf +NotoSansMalayalam-ExtraBold.ttf +NotoSansMalayalam-ExtraCondensed.ttf +NotoSansMalayalam-ExtraCondensedBlack.ttf +NotoSansMalayalam-ExtraCondensedBold.ttf +NotoSansMalayalam-ExtraCondensedExtraBold.ttf +NotoSansMalayalam-ExtraCondensedExtraLight.ttf +NotoSansMalayalam-ExtraCondensedLight.ttf +NotoSansMalayalam-ExtraCondensedMedium.ttf +NotoSansMalayalam-ExtraCondensedSemiBold.ttf +NotoSansMalayalam-ExtraCondensedThin.ttf +NotoSansMalayalam-ExtraLight.ttf +NotoSansMalayalam-Light.ttf +NotoSansMalayalam-Medium.ttf +NotoSansMalayalam-Regular.ttf +NotoSansMalayalam-SemiBold.ttf +NotoSansMalayalam-SemiCondensed.ttf +NotoSansMalayalam-SemiCondensedBlack.ttf +NotoSansMalayalam-SemiCondensedBold.ttf +NotoSansMalayalam-SemiCondensedExtraBold.ttf +NotoSansMalayalam-SemiCondensedExtraLight.ttf +NotoSansMalayalam-SemiCondensedLight.ttf +NotoSansMalayalam-SemiCondensedMedium.ttf +NotoSansMalayalam-SemiCondensedSemiBold.ttf +NotoSansMalayalam-SemiCondensedThin.ttf +NotoSansMalayalam-Thin.ttf +NotoSansMalayalamUI-Black.ttf +NotoSansMalayalamUI-Bold.ttf +NotoSansMalayalamUI-Condensed.ttf +NotoSansMalayalamUI-CondensedBlack.ttf +NotoSansMalayalamUI-CondensedBold.ttf +NotoSansMalayalamUI-CondensedExtraBold.ttf +NotoSansMalayalamUI-CondensedExtraLight.ttf +NotoSansMalayalamUI-CondensedLight.ttf +NotoSansMalayalamUI-CondensedMedium.ttf +NotoSansMalayalamUI-CondensedSemiBold.ttf +NotoSansMalayalamUI-CondensedThin.ttf +NotoSansMalayalamUI-ExtraBold.ttf +NotoSansMalayalamUI-ExtraCondensed.ttf +NotoSansMalayalamUI-ExtraCondensedBlack.ttf +NotoSansMalayalamUI-ExtraCondensedBold.ttf +NotoSansMalayalamUI-ExtraCondensedExtraBold.ttf +NotoSansMalayalamUI-ExtraCondensedExtraLight.ttf +NotoSansMalayalamUI-ExtraCondensedLight.ttf +NotoSansMalayalamUI-ExtraCondensedMedium.ttf +NotoSansMalayalamUI-ExtraCondensedSemiBold.ttf +NotoSansMalayalamUI-ExtraCondensedThin.ttf +NotoSansMalayalamUI-ExtraLight.ttf +NotoSansMalayalamUI-Light.ttf +NotoSansMalayalamUI-Medium.ttf +NotoSansMalayalamUI-Regular.ttf +NotoSansMalayalamUI-SemiBold.ttf +NotoSansMalayalamUI-SemiCondensed.ttf +NotoSansMalayalamUI-SemiCondensedBlack.ttf +NotoSansMalayalamUI-SemiCondensedBold.ttf +NotoSansMalayalamUI-SemiCondensedExtraBold.ttf +NotoSansMalayalamUI-SemiCondensedExtraLight.ttf +NotoSansMalayalamUI-SemiCondensedLight.ttf +NotoSansMalayalamUI-SemiCondensedMedium.ttf +NotoSansMalayalamUI-SemiCondensedSemiBold.ttf +NotoSansMalayalamUI-SemiCondensedThin.ttf +NotoSansMalayalamUI-Thin.ttf +NotoSansMalayalamUI[wdth,wght].ttf +NotoSansMalayalam[wdth,wght].ttf +NotoSansMandaic-Regular.ttf +NotoSansManichaean-Regular.ttf +NotoSansMarchen-Regular.ttf +NotoSansMasaramGondi-Regular.ttf +NotoSansMath-Regular.ttf +NotoSansMayanNumerals-Regular.ttf +NotoSansMedefaidrin-Bold.ttf +NotoSansMedefaidrin-Medium.ttf +NotoSansMedefaidrin-Regular.ttf +NotoSansMedefaidrin-SemiBold.ttf +NotoSansMedefaidrin[wght].ttf +NotoSansMeeteiMayek-Black.ttf +NotoSansMeeteiMayek-Bold.ttf +NotoSansMeeteiMayek-ExtraBold.ttf +NotoSansMeeteiMayek-ExtraLight.ttf +NotoSansMeeteiMayek-Light.ttf +NotoSansMeeteiMayek-Medium.ttf +NotoSansMeeteiMayek-Regular.ttf +NotoSansMeeteiMayek-SemiBold.ttf +NotoSansMeeteiMayek-Thin.ttf +NotoSansMeeteiMayek[wght].ttf +NotoSansMendeKikakui-Regular.ttf +NotoSansMeroitic-Regular.ttf +NotoSansMiao-Regular.ttf +NotoSansModi-Regular.ttf +NotoSansMongolian-Regular.ttf +NotoSansMono-Black.ttf +NotoSansMono-Bold.ttf +NotoSansMono-Condensed.ttf +NotoSansMono-CondensedBlack.ttf +NotoSansMono-CondensedBold.ttf +NotoSansMono-CondensedExtraBold.ttf +NotoSansMono-CondensedExtraLight.ttf +NotoSansMono-CondensedLight.ttf +NotoSansMono-CondensedMedium.ttf +NotoSansMono-CondensedSemiBold.ttf +NotoSansMono-CondensedThin.ttf +NotoSansMono-ExtraBold.ttf +NotoSansMono-ExtraCondensed.ttf +NotoSansMono-ExtraCondensedBlack.ttf +NotoSansMono-ExtraCondensedBold.ttf +NotoSansMono-ExtraCondensedExtraBold.ttf +NotoSansMono-ExtraCondensedExtraLight.ttf +NotoSansMono-ExtraCondensedLight.ttf +NotoSansMono-ExtraCondensedMedium.ttf +NotoSansMono-ExtraCondensedSemiBold.ttf +NotoSansMono-ExtraCondensedThin.ttf +NotoSansMono-ExtraLight.ttf +NotoSansMono-Light.ttf +NotoSansMono-Medium.ttf +NotoSansMono-Regular.ttf +NotoSansMono-SemiBold.ttf +NotoSansMono-SemiCondensed.ttf +NotoSansMono-SemiCondensedBlack.ttf +NotoSansMono-SemiCondensedBold.ttf +NotoSansMono-SemiCondensedExtraBold.ttf +NotoSansMono-SemiCondensedExtraLight.ttf +NotoSansMono-SemiCondensedLight.ttf +NotoSansMono-SemiCondensedMedium.ttf +NotoSansMono-SemiCondensedSemiBold.ttf +NotoSansMono-SemiCondensedThin.ttf +NotoSansMono-Thin.ttf +NotoSansMono[wdth,wght].ttf +NotoSansMro-Regular.ttf +NotoSansMultani-Regular.ttf +NotoSansMyanmar-Black.ttf +NotoSansMyanmar-Bold.ttf +NotoSansMyanmar-Condensed.ttf +NotoSansMyanmar-CondensedBlack.ttf +NotoSansMyanmar-CondensedBold.ttf +NotoSansMyanmar-CondensedExtraBold.ttf +NotoSansMyanmar-CondensedExtraLight.ttf +NotoSansMyanmar-CondensedLight.ttf +NotoSansMyanmar-CondensedMedium.ttf +NotoSansMyanmar-CondensedSemiBold.ttf +NotoSansMyanmar-CondensedThin.ttf +NotoSansMyanmar-ExtraBold.ttf +NotoSansMyanmar-ExtraCondensed.ttf +NotoSansMyanmar-ExtraCondensedBlack.ttf +NotoSansMyanmar-ExtraCondensedBold.ttf +NotoSansMyanmar-ExtraCondensedExtraBold.ttf +NotoSansMyanmar-ExtraCondensedExtraLight.ttf +NotoSansMyanmar-ExtraCondensedLight.ttf +NotoSansMyanmar-ExtraCondensedMedium.ttf +NotoSansMyanmar-ExtraCondensedSemiBold.ttf +NotoSansMyanmar-ExtraCondensedThin.ttf +NotoSansMyanmar-ExtraLight.ttf +NotoSansMyanmar-Light.ttf +NotoSansMyanmar-Medium.ttf +NotoSansMyanmar-Regular.ttf +NotoSansMyanmar-SemiBold.ttf +NotoSansMyanmar-SemiCondensed.ttf +NotoSansMyanmar-SemiCondensedBlack.ttf +NotoSansMyanmar-SemiCondensedBold.ttf +NotoSansMyanmar-SemiCondensedExtraBold.ttf +NotoSansMyanmar-SemiCondensedExtraLight.ttf +NotoSansMyanmar-SemiCondensedLight.ttf +NotoSansMyanmar-SemiCondensedMedium.ttf +NotoSansMyanmar-SemiCondensedSemiBold.ttf +NotoSansMyanmar-SemiCondensedThin.ttf +NotoSansMyanmar-Thin.ttf +NotoSansMyanmarUI-Black.ttf +NotoSansMyanmarUI-Bold.ttf +NotoSansMyanmarUI-Condensed.ttf +NotoSansMyanmarUI-CondensedBlack.ttf +NotoSansMyanmarUI-CondensedBold.ttf +NotoSansMyanmarUI-CondensedExtraBold.ttf +NotoSansMyanmarUI-CondensedExtraLight.ttf +NotoSansMyanmarUI-CondensedLight.ttf +NotoSansMyanmarUI-CondensedMedium.ttf +NotoSansMyanmarUI-CondensedSemiBold.ttf +NotoSansMyanmarUI-CondensedThin.ttf +NotoSansMyanmarUI-ExtraBold.ttf +NotoSansMyanmarUI-ExtraCondensed.ttf +NotoSansMyanmarUI-ExtraCondensedBlack.ttf +NotoSansMyanmarUI-ExtraCondensedBold.ttf +NotoSansMyanmarUI-ExtraCondensedExtraBold.ttf +NotoSansMyanmarUI-ExtraCondensedExtraLight.ttf +NotoSansMyanmarUI-ExtraCondensedLight.ttf +NotoSansMyanmarUI-ExtraCondensedMedium.ttf +NotoSansMyanmarUI-ExtraCondensedSemiBold.ttf +NotoSansMyanmarUI-ExtraCondensedThin.ttf +NotoSansMyanmarUI-ExtraLight.ttf +NotoSansMyanmarUI-Light.ttf +NotoSansMyanmarUI-Medium.ttf +NotoSansMyanmarUI-Regular.ttf +NotoSansMyanmarUI-SemiBold.ttf +NotoSansMyanmarUI-SemiCondensed.ttf +NotoSansMyanmarUI-SemiCondensedBlack.ttf +NotoSansMyanmarUI-SemiCondensedBold.ttf +NotoSansMyanmarUI-SemiCondensedExtraBold.ttf +NotoSansMyanmarUI-SemiCondensedExtraLight.ttf +NotoSansMyanmarUI-SemiCondensedLight.ttf +NotoSansMyanmarUI-SemiCondensedMedium.ttf +NotoSansMyanmarUI-SemiCondensedSemiBold.ttf +NotoSansMyanmarUI-SemiCondensedThin.ttf +NotoSansMyanmarUI-Thin.ttf +NotoSansMyanmar[wdth,wght].ttf +NotoSansNKo-Regular.ttf +NotoSansNabataean-Regular.ttf +NotoSansNagMundari[wght].ttf +NotoSansNandinagari-Regular.ttf +NotoSansNewTaiLue-Regular.ttf +NotoSansNewTaiLue[wght].ttf +NotoSansNewa-Regular.ttf +NotoSansNushu-Regular.ttf +NotoSansOgham-Regular.ttf +NotoSansOlChiki-Bold.ttf +NotoSansOlChiki-Medium.ttf +NotoSansOlChiki-Regular.ttf +NotoSansOlChiki-SemiBold.ttf +NotoSansOlChiki[wght].ttf +NotoSansOldHungarian-Regular.ttf +NotoSansOldItalic-Regular.ttf +NotoSansOldNorthArabian-Regular.ttf +NotoSansOldPermic-Regular.ttf +NotoSansOldPersian-Regular.ttf +NotoSansOldSogdian-Regular.ttf +NotoSansOldSouthArabian-Regular.ttf +NotoSansOldTurkic-Regular.ttf +NotoSansOriya-Black.ttf +NotoSansOriya-Bold.ttf +NotoSansOriya-Condensed.ttf +NotoSansOriya-CondensedBlack.ttf +NotoSansOriya-CondensedBold.ttf +NotoSansOriya-CondensedThin.ttf +NotoSansOriya-ExtraCondensed.ttf +NotoSansOriya-ExtraCondensedBlack.ttf +NotoSansOriya-ExtraCondensedBold.ttf +NotoSansOriya-ExtraCondensedThin.ttf +NotoSansOriya-Regular.ttf +NotoSansOriya-Thin.ttf +NotoSansOriyaUI-Black.ttf +NotoSansOriyaUI-Bold.ttf +NotoSansOriyaUI-Condensed.ttf +NotoSansOriyaUI-CondensedBlack.ttf +NotoSansOriyaUI-CondensedBold.ttf +NotoSansOriyaUI-CondensedThin.ttf +NotoSansOriyaUI-ExtraCondensed.ttf +NotoSansOriyaUI-ExtraCondensedBlack.ttf +NotoSansOriyaUI-ExtraCondensedBold.ttf +NotoSansOriyaUI-ExtraCondensedThin.ttf +NotoSansOriyaUI-Regular.ttf +NotoSansOriyaUI-Thin.ttf +NotoSansOriya[wdth,wght].ttf +NotoSansOsage-Regular.ttf +NotoSansOsmanya-Regular.ttf +NotoSansPahawhHmong-Regular.ttf +NotoSansPalmyrene-Regular.ttf +NotoSansPauCinHau-Regular.ttf +NotoSansPhagsPa-Regular.ttf +NotoSansPhoenician-Regular.ttf +NotoSansPsalterPahlavi-Regular.ttf +NotoSansRejang-Regular.ttf +NotoSansRunic-Regular.ttf +NotoSansSC[wght].ttf +NotoSansSamaritan-Regular.ttf +NotoSansSaurashtra-Regular.ttf +NotoSansSharada-Regular.ttf +NotoSansShavian-Regular.ttf +NotoSansSiddham-Regular.ttf +NotoSansSignWriting-Regular.ttf +NotoSansSinhala-Black.ttf +NotoSansSinhala-Bold.ttf +NotoSansSinhala-Condensed.ttf +NotoSansSinhala-CondensedBlack.ttf +NotoSansSinhala-CondensedBold.ttf +NotoSansSinhala-CondensedExtraBold.ttf +NotoSansSinhala-CondensedExtraLight.ttf +NotoSansSinhala-CondensedLight.ttf +NotoSansSinhala-CondensedMedium.ttf +NotoSansSinhala-CondensedSemiBold.ttf +NotoSansSinhala-CondensedThin.ttf +NotoSansSinhala-ExtraBold.ttf +NotoSansSinhala-ExtraCondensed.ttf +NotoSansSinhala-ExtraCondensedBlack.ttf +NotoSansSinhala-ExtraCondensedBold.ttf +NotoSansSinhala-ExtraCondensedExtraBold.ttf +NotoSansSinhala-ExtraCondensedExtraLight.ttf +NotoSansSinhala-ExtraCondensedLight.ttf +NotoSansSinhala-ExtraCondensedMedium.ttf +NotoSansSinhala-ExtraCondensedSemiBold.ttf +NotoSansSinhala-ExtraCondensedThin.ttf +NotoSansSinhala-ExtraLight.ttf +NotoSansSinhala-Light.ttf +NotoSansSinhala-Medium.ttf +NotoSansSinhala-Regular.ttf +NotoSansSinhala-SemiBold.ttf +NotoSansSinhala-SemiCondensed.ttf +NotoSansSinhala-SemiCondensedBlack.ttf +NotoSansSinhala-SemiCondensedBold.ttf +NotoSansSinhala-SemiCondensedExtraBold.ttf +NotoSansSinhala-SemiCondensedExtraLight.ttf +NotoSansSinhala-SemiCondensedLight.ttf +NotoSansSinhala-SemiCondensedMedium.ttf +NotoSansSinhala-SemiCondensedSemiBold.ttf +NotoSansSinhala-SemiCondensedThin.ttf +NotoSansSinhala-Thin.ttf +NotoSansSinhalaUI-Black.ttf +NotoSansSinhalaUI-Bold.ttf +NotoSansSinhalaUI-Condensed.ttf +NotoSansSinhalaUI-CondensedBlack.ttf +NotoSansSinhalaUI-CondensedBold.ttf +NotoSansSinhalaUI-CondensedExtraBold.ttf +NotoSansSinhalaUI-CondensedExtraLight.ttf +NotoSansSinhalaUI-CondensedLight.ttf +NotoSansSinhalaUI-CondensedMedium.ttf +NotoSansSinhalaUI-CondensedSemiBold.ttf +NotoSansSinhalaUI-CondensedThin.ttf +NotoSansSinhalaUI-ExtraBold.ttf +NotoSansSinhalaUI-ExtraCondensed.ttf +NotoSansSinhalaUI-ExtraCondensedBlack.ttf +NotoSansSinhalaUI-ExtraCondensedBold.ttf +NotoSansSinhalaUI-ExtraCondensedExtraBold.ttf +NotoSansSinhalaUI-ExtraCondensedExtraLight.ttf +NotoSansSinhalaUI-ExtraCondensedLight.ttf +NotoSansSinhalaUI-ExtraCondensedMedium.ttf +NotoSansSinhalaUI-ExtraCondensedSemiBold.ttf +NotoSansSinhalaUI-ExtraCondensedThin.ttf +NotoSansSinhalaUI-ExtraLight.ttf +NotoSansSinhalaUI-Light.ttf +NotoSansSinhalaUI-Medium.ttf +NotoSansSinhalaUI-Regular.ttf +NotoSansSinhalaUI-SemiBold.ttf +NotoSansSinhalaUI-SemiCondensed.ttf +NotoSansSinhalaUI-SemiCondensedBlack.ttf +NotoSansSinhalaUI-SemiCondensedBold.ttf +NotoSansSinhalaUI-SemiCondensedExtraBold.ttf +NotoSansSinhalaUI-SemiCondensedExtraLight.ttf +NotoSansSinhalaUI-SemiCondensedLight.ttf +NotoSansSinhalaUI-SemiCondensedMedium.ttf +NotoSansSinhalaUI-SemiCondensedSemiBold.ttf +NotoSansSinhalaUI-SemiCondensedThin.ttf +NotoSansSinhalaUI-Thin.ttf +NotoSansSinhalaUI[wdth,wght].ttf +NotoSansSinhala[wdth,wght].ttf +NotoSansSogdian-Regular.ttf +NotoSansSoraSompeng-Bold.ttf +NotoSansSoraSompeng-Medium.ttf +NotoSansSoraSompeng-Regular.ttf +NotoSansSoraSompeng-SemiBold.ttf +NotoSansSoraSompeng[wght].ttf +NotoSansSoyombo-Regular.ttf +NotoSansSundanese-Bold.ttf +NotoSansSundanese-Medium.ttf +NotoSansSundanese-Regular.ttf +NotoSansSundanese-SemiBold.ttf +NotoSansSundanese[wght].ttf +NotoSansSylotiNagri-Regular.ttf +NotoSansSymbols-Black.ttf +NotoSansSymbols-Bold.ttf +NotoSansSymbols-ExtraBold.ttf +NotoSansSymbols-ExtraLight.ttf +NotoSansSymbols-Light.ttf +NotoSansSymbols-Medium.ttf +NotoSansSymbols-Regular.ttf +NotoSansSymbols-SemiBold.ttf +NotoSansSymbols-Thin.ttf +NotoSansSymbols2-Regular.ttf +NotoSansSymbols[wght].ttf +NotoSansSyriac-Black.ttf +NotoSansSyriac-Regular.ttf +NotoSansSyriac-Thin.ttf +NotoSansSyriac[wght].ttf +NotoSansTC[wght].ttf +NotoSansTagalog-Regular.ttf +NotoSansTagbanwa-Regular.ttf +NotoSansTaiLe-Regular.ttf +NotoSansTaiTham-Bold.ttf +NotoSansTaiTham-Medium.ttf +NotoSansTaiTham-Regular.ttf +NotoSansTaiTham-SemiBold.ttf +NotoSansTaiTham[wght].ttf +NotoSansTaiViet-Regular.ttf +NotoSansTakri-Regular.ttf +NotoSansTamil-Black.ttf +NotoSansTamil-Bold.ttf +NotoSansTamil-Condensed.ttf +NotoSansTamil-CondensedBlack.ttf +NotoSansTamil-CondensedBold.ttf +NotoSansTamil-CondensedExtraBold.ttf +NotoSansTamil-CondensedExtraLight.ttf +NotoSansTamil-CondensedLight.ttf +NotoSansTamil-CondensedMedium.ttf +NotoSansTamil-CondensedSemiBold.ttf +NotoSansTamil-CondensedThin.ttf +NotoSansTamil-ExtraBold.ttf +NotoSansTamil-ExtraCondensed.ttf +NotoSansTamil-ExtraCondensedBlack.ttf +NotoSansTamil-ExtraCondensedBold.ttf +NotoSansTamil-ExtraCondensedExtraBold.ttf +NotoSansTamil-ExtraCondensedExtraLight.ttf +NotoSansTamil-ExtraCondensedLight.ttf +NotoSansTamil-ExtraCondensedMedium.ttf +NotoSansTamil-ExtraCondensedSemiBold.ttf +NotoSansTamil-ExtraCondensedThin.ttf +NotoSansTamil-ExtraLight.ttf +NotoSansTamil-Light.ttf +NotoSansTamil-Medium.ttf +NotoSansTamil-Regular.ttf +NotoSansTamil-SemiBold.ttf +NotoSansTamil-SemiCondensed.ttf +NotoSansTamil-SemiCondensedBlack.ttf +NotoSansTamil-SemiCondensedBold.ttf +NotoSansTamil-SemiCondensedExtraBold.ttf +NotoSansTamil-SemiCondensedExtraLight.ttf +NotoSansTamil-SemiCondensedLight.ttf +NotoSansTamil-SemiCondensedMedium.ttf +NotoSansTamil-SemiCondensedSemiBold.ttf +NotoSansTamil-SemiCondensedThin.ttf +NotoSansTamil-Thin.ttf +NotoSansTamilSupplement-Regular.ttf +NotoSansTamilUI-Black.ttf +NotoSansTamilUI-Bold.ttf +NotoSansTamilUI-Condensed.ttf +NotoSansTamilUI-CondensedBlack.ttf +NotoSansTamilUI-CondensedBold.ttf +NotoSansTamilUI-CondensedExtraBold.ttf +NotoSansTamilUI-CondensedExtraLight.ttf +NotoSansTamilUI-CondensedLight.ttf +NotoSansTamilUI-CondensedMedium.ttf +NotoSansTamilUI-CondensedSemiBold.ttf +NotoSansTamilUI-CondensedThin.ttf +NotoSansTamilUI-ExtraBold.ttf +NotoSansTamilUI-ExtraCondensed.ttf +NotoSansTamilUI-ExtraCondensedBlack.ttf +NotoSansTamilUI-ExtraCondensedBold.ttf +NotoSansTamilUI-ExtraCondensedExtraBold.ttf +NotoSansTamilUI-ExtraCondensedExtraLight.ttf +NotoSansTamilUI-ExtraCondensedLight.ttf +NotoSansTamilUI-ExtraCondensedMedium.ttf +NotoSansTamilUI-ExtraCondensedSemiBold.ttf +NotoSansTamilUI-ExtraCondensedThin.ttf +NotoSansTamilUI-ExtraLight.ttf +NotoSansTamilUI-Light.ttf +NotoSansTamilUI-Medium.ttf +NotoSansTamilUI-Regular.ttf +NotoSansTamilUI-SemiBold.ttf +NotoSansTamilUI-SemiCondensed.ttf +NotoSansTamilUI-SemiCondensedBlack.ttf +NotoSansTamilUI-SemiCondensedBold.ttf +NotoSansTamilUI-SemiCondensedExtraBold.ttf +NotoSansTamilUI-SemiCondensedExtraLight.ttf +NotoSansTamilUI-SemiCondensedLight.ttf +NotoSansTamilUI-SemiCondensedMedium.ttf +NotoSansTamilUI-SemiCondensedSemiBold.ttf +NotoSansTamilUI-SemiCondensedThin.ttf +NotoSansTamilUI-Thin.ttf +NotoSansTamilUI[wdth,wght].ttf +NotoSansTamil[wdth,wght].ttf +NotoSansTangsa[wght].ttf +NotoSansTelugu-Black.ttf +NotoSansTelugu-Bold.ttf +NotoSansTelugu-Condensed.ttf +NotoSansTelugu-CondensedBlack.ttf +NotoSansTelugu-CondensedBold.ttf +NotoSansTelugu-CondensedExtraBold.ttf +NotoSansTelugu-CondensedExtraLight.ttf +NotoSansTelugu-CondensedLight.ttf +NotoSansTelugu-CondensedMedium.ttf +NotoSansTelugu-CondensedSemiBold.ttf +NotoSansTelugu-CondensedThin.ttf +NotoSansTelugu-ExtraBold.ttf +NotoSansTelugu-ExtraCondensed.ttf +NotoSansTelugu-ExtraCondensedBlack.ttf +NotoSansTelugu-ExtraCondensedBold.ttf +NotoSansTelugu-ExtraCondensedExtraBold.ttf +NotoSansTelugu-ExtraCondensedExtraLight.ttf +NotoSansTelugu-ExtraCondensedLight.ttf +NotoSansTelugu-ExtraCondensedMedium.ttf +NotoSansTelugu-ExtraCondensedSemiBold.ttf +NotoSansTelugu-ExtraCondensedThin.ttf +NotoSansTelugu-ExtraLight.ttf +NotoSansTelugu-Light.ttf +NotoSansTelugu-Medium.ttf +NotoSansTelugu-Regular.ttf +NotoSansTelugu-SemiBold.ttf +NotoSansTelugu-SemiCondensed.ttf +NotoSansTelugu-SemiCondensedBlack.ttf +NotoSansTelugu-SemiCondensedBold.ttf +NotoSansTelugu-SemiCondensedExtraBold.ttf +NotoSansTelugu-SemiCondensedExtraLight.ttf +NotoSansTelugu-SemiCondensedLight.ttf +NotoSansTelugu-SemiCondensedMedium.ttf +NotoSansTelugu-SemiCondensedSemiBold.ttf +NotoSansTelugu-SemiCondensedThin.ttf +NotoSansTelugu-Thin.ttf +NotoSansTeluguUI-Black.ttf +NotoSansTeluguUI-Bold.ttf +NotoSansTeluguUI-Condensed.ttf +NotoSansTeluguUI-CondensedBlack.ttf +NotoSansTeluguUI-CondensedBold.ttf +NotoSansTeluguUI-CondensedExtraBold.ttf +NotoSansTeluguUI-CondensedExtraLight.ttf +NotoSansTeluguUI-CondensedLight.ttf +NotoSansTeluguUI-CondensedMedium.ttf +NotoSansTeluguUI-CondensedSemiBold.ttf +NotoSansTeluguUI-CondensedThin.ttf +NotoSansTeluguUI-ExtraBold.ttf +NotoSansTeluguUI-ExtraCondensed.ttf +NotoSansTeluguUI-ExtraCondensedBlack.ttf +NotoSansTeluguUI-ExtraCondensedBold.ttf +NotoSansTeluguUI-ExtraCondensedExtraBold.ttf +NotoSansTeluguUI-ExtraCondensedExtraLight.ttf +NotoSansTeluguUI-ExtraCondensedLight.ttf +NotoSansTeluguUI-ExtraCondensedMedium.ttf +NotoSansTeluguUI-ExtraCondensedSemiBold.ttf +NotoSansTeluguUI-ExtraCondensedThin.ttf +NotoSansTeluguUI-ExtraLight.ttf +NotoSansTeluguUI-Light.ttf +NotoSansTeluguUI-Medium.ttf +NotoSansTeluguUI-Regular.ttf +NotoSansTeluguUI-SemiBold.ttf +NotoSansTeluguUI-SemiCondensed.ttf +NotoSansTeluguUI-SemiCondensedBlack.ttf +NotoSansTeluguUI-SemiCondensedBold.ttf +NotoSansTeluguUI-SemiCondensedExtraBold.ttf +NotoSansTeluguUI-SemiCondensedExtraLight.ttf +NotoSansTeluguUI-SemiCondensedLight.ttf +NotoSansTeluguUI-SemiCondensedMedium.ttf +NotoSansTeluguUI-SemiCondensedSemiBold.ttf +NotoSansTeluguUI-SemiCondensedThin.ttf +NotoSansTeluguUI-Thin.ttf +NotoSansTeluguUI[wdth,wght].ttf +NotoSansTelugu[wdth,wght].ttf +NotoSansThaana-Black.ttf +NotoSansThaana-Bold.ttf +NotoSansThaana-ExtraBold.ttf +NotoSansThaana-ExtraLight.ttf +NotoSansThaana-Light.ttf +NotoSansThaana-Medium.ttf +NotoSansThaana-Regular.ttf +NotoSansThaana-SemiBold.ttf +NotoSansThaana-Thin.ttf +NotoSansThaana[wght].ttf +NotoSansThai-Black.ttf +NotoSansThai-Bold.ttf +NotoSansThai-Condensed.ttf +NotoSansThai-CondensedBlack.ttf +NotoSansThai-CondensedBold.ttf +NotoSansThai-CondensedExtraBold.ttf +NotoSansThai-CondensedExtraLight.ttf +NotoSansThai-CondensedLight.ttf +NotoSansThai-CondensedMedium.ttf +NotoSansThai-CondensedSemiBold.ttf +NotoSansThai-CondensedThin.ttf +NotoSansThai-ExtraBold.ttf +NotoSansThai-ExtraCondensed.ttf +NotoSansThai-ExtraCondensedBlack.ttf +NotoSansThai-ExtraCondensedBold.ttf +NotoSansThai-ExtraCondensedExtraBold.ttf +NotoSansThai-ExtraCondensedExtraLight.ttf +NotoSansThai-ExtraCondensedLight.ttf +NotoSansThai-ExtraCondensedMedium.ttf +NotoSansThai-ExtraCondensedSemiBold.ttf +NotoSansThai-ExtraCondensedThin.ttf +NotoSansThai-ExtraLight.ttf +NotoSansThai-Light.ttf +NotoSansThai-Medium.ttf +NotoSansThai-Regular.ttf +NotoSansThai-SemiBold.ttf +NotoSansThai-SemiCondensed.ttf +NotoSansThai-SemiCondensedBlack.ttf +NotoSansThai-SemiCondensedBold.ttf +NotoSansThai-SemiCondensedExtraBold.ttf +NotoSansThai-SemiCondensedExtraLight.ttf +NotoSansThai-SemiCondensedLight.ttf +NotoSansThai-SemiCondensedMedium.ttf +NotoSansThai-SemiCondensedSemiBold.ttf +NotoSansThai-SemiCondensedThin.ttf +NotoSansThai-Thin.ttf +NotoSansThaiLooped-Black.ttf +NotoSansThaiLooped-Bold.ttf +NotoSansThaiLooped-ExtraBold.ttf +NotoSansThaiLooped-ExtraLight.ttf +NotoSansThaiLooped-Light.ttf +NotoSansThaiLooped-Medium.ttf +NotoSansThaiLooped-Regular.ttf +NotoSansThaiLooped-SemiBold.ttf +NotoSansThaiLooped-Thin.ttf +NotoSansThaiUI-Black.ttf +NotoSansThaiUI-Bold.ttf +NotoSansThaiUI-Condensed.ttf +NotoSansThaiUI-CondensedBlack.ttf +NotoSansThaiUI-CondensedBold.ttf +NotoSansThaiUI-CondensedExtraBold.ttf +NotoSansThaiUI-CondensedExtraLight.ttf +NotoSansThaiUI-CondensedLight.ttf +NotoSansThaiUI-CondensedMedium.ttf +NotoSansThaiUI-CondensedSemiBold.ttf +NotoSansThaiUI-CondensedThin.ttf +NotoSansThaiUI-ExtraBold.ttf +NotoSansThaiUI-ExtraCondensed.ttf +NotoSansThaiUI-ExtraCondensedBlack.ttf +NotoSansThaiUI-ExtraCondensedBold.ttf +NotoSansThaiUI-ExtraCondensedExtraBold.ttf +NotoSansThaiUI-ExtraCondensedExtraLight.ttf +NotoSansThaiUI-ExtraCondensedLight.ttf +NotoSansThaiUI-ExtraCondensedMedium.ttf +NotoSansThaiUI-ExtraCondensedSemiBold.ttf +NotoSansThaiUI-ExtraCondensedThin.ttf +NotoSansThaiUI-ExtraLight.ttf +NotoSansThaiUI-Light.ttf +NotoSansThaiUI-Medium.ttf +NotoSansThaiUI-Regular.ttf +NotoSansThaiUI-SemiBold.ttf +NotoSansThaiUI-SemiCondensed.ttf +NotoSansThaiUI-SemiCondensedBlack.ttf +NotoSansThaiUI-SemiCondensedBold.ttf +NotoSansThaiUI-SemiCondensedExtraBold.ttf +NotoSansThaiUI-SemiCondensedExtraLight.ttf +NotoSansThaiUI-SemiCondensedLight.ttf +NotoSansThaiUI-SemiCondensedMedium.ttf +NotoSansThaiUI-SemiCondensedSemiBold.ttf +NotoSansThaiUI-SemiCondensedThin.ttf +NotoSansThaiUI-Thin.ttf +NotoSansThaiUI[wdth,wght].ttf +NotoSansThai[wdth,wght].ttf +NotoSansTifinagh-Regular.ttf +NotoSansTifinaghAPT-Regular.ttf +NotoSansTifinaghAdrar-Regular.ttf +NotoSansTifinaghAgrawImazighen-Regular.ttf +NotoSansTifinaghAhaggar-Regular.ttf +NotoSansTifinaghAir-Regular.ttf +NotoSansTifinaghAzawagh-Regular.ttf +NotoSansTifinaghGhat-Regular.ttf +NotoSansTifinaghHawad-Regular.ttf +NotoSansTifinaghRhissaIxa-Regular.ttf +NotoSansTifinaghSIL-Regular.ttf +NotoSansTifinaghTawellemmet-Regular.ttf +NotoSansTirhuta-Regular.ttf +NotoSansUgaritic-Regular.ttf +NotoSansVai-Regular.ttf +NotoSansWancho-Regular.ttf +NotoSansWarangCiti-Regular.ttf +NotoSansYi-Regular.ttf +NotoSansZanabazarSquare-Regular.ttf +NotoSerif-Black.ttf +NotoSerif-BlackItalic.ttf +NotoSerif-Bold.ttf +NotoSerif-BoldItalic.ttf +NotoSerif-Condensed.ttf +NotoSerif-CondensedBlack.ttf +NotoSerif-CondensedBlackItalic.ttf +NotoSerif-CondensedBold.ttf +NotoSerif-CondensedBoldItalic.ttf +NotoSerif-CondensedExtraBold.ttf +NotoSerif-CondensedExtraBoldItalic.ttf +NotoSerif-CondensedExtraLight.ttf +NotoSerif-CondensedExtraLightItalic.ttf +NotoSerif-CondensedItalic.ttf +NotoSerif-CondensedLight.ttf +NotoSerif-CondensedLightItalic.ttf +NotoSerif-CondensedMedium.ttf +NotoSerif-CondensedMediumItalic.ttf +NotoSerif-CondensedSemiBold.ttf +NotoSerif-CondensedSemiBoldItalic.ttf +NotoSerif-CondensedThin.ttf +NotoSerif-CondensedThinItalic.ttf +NotoSerif-ExtraBold.ttf +NotoSerif-ExtraBoldItalic.ttf +NotoSerif-ExtraCondensed.ttf +NotoSerif-ExtraCondensedBlack.ttf +NotoSerif-ExtraCondensedBlackItalic.ttf +NotoSerif-ExtraCondensedBold.ttf +NotoSerif-ExtraCondensedBoldItalic.ttf +NotoSerif-ExtraCondensedExtraBold.ttf +NotoSerif-ExtraCondensedExtraBoldItalic.ttf +NotoSerif-ExtraCondensedExtraLight.ttf +NotoSerif-ExtraCondensedExtraLightItalic.ttf +NotoSerif-ExtraCondensedItalic.ttf +NotoSerif-ExtraCondensedLight.ttf +NotoSerif-ExtraCondensedLightItalic.ttf +NotoSerif-ExtraCondensedMedium.ttf +NotoSerif-ExtraCondensedMediumItalic.ttf +NotoSerif-ExtraCondensedSemiBold.ttf +NotoSerif-ExtraCondensedSemiBoldItalic.ttf +NotoSerif-ExtraCondensedThin.ttf +NotoSerif-ExtraCondensedThinItalic.ttf +NotoSerif-ExtraLight.ttf +NotoSerif-ExtraLightItalic.ttf +NotoSerif-Italic.ttf +NotoSerif-Italic[wdth,wght].ttf +NotoSerif-Light.ttf +NotoSerif-LightItalic.ttf +NotoSerif-Medium.ttf +NotoSerif-MediumItalic.ttf +NotoSerif-Regular.ttf +NotoSerif-SemiBold.ttf +NotoSerif-SemiBoldItalic.ttf +NotoSerif-SemiCondensed.ttf +NotoSerif-SemiCondensedBlack.ttf +NotoSerif-SemiCondensedBlackItalic.ttf +NotoSerif-SemiCondensedBold.ttf +NotoSerif-SemiCondensedBoldItalic.ttf +NotoSerif-SemiCondensedExtraBold.ttf +NotoSerif-SemiCondensedExtraBoldItalic.ttf +NotoSerif-SemiCondensedExtraLight.ttf +NotoSerif-SemiCondensedExtraLightItalic.ttf +NotoSerif-SemiCondensedItalic.ttf +NotoSerif-SemiCondensedLight.ttf +NotoSerif-SemiCondensedLightItalic.ttf +NotoSerif-SemiCondensedMedium.ttf +NotoSerif-SemiCondensedMediumItalic.ttf +NotoSerif-SemiCondensedSemiBold.ttf +NotoSerif-SemiCondensedSemiBoldItalic.ttf +NotoSerif-SemiCondensedThin.ttf +NotoSerif-SemiCondensedThinItalic.ttf +NotoSerif-Thin.ttf +NotoSerif-ThinItalic.ttf +NotoSerifAhom-Regular.ttf +NotoSerifArmenian-Black.ttf +NotoSerifArmenian-Bold.ttf +NotoSerifArmenian-Condensed.ttf +NotoSerifArmenian-CondensedBlack.ttf +NotoSerifArmenian-CondensedBold.ttf +NotoSerifArmenian-CondensedExtraBold.ttf +NotoSerifArmenian-CondensedExtraLight.ttf +NotoSerifArmenian-CondensedLight.ttf +NotoSerifArmenian-CondensedMedium.ttf +NotoSerifArmenian-CondensedSemiBold.ttf +NotoSerifArmenian-CondensedThin.ttf +NotoSerifArmenian-ExtraBold.ttf +NotoSerifArmenian-ExtraCondensed.ttf +NotoSerifArmenian-ExtraCondensedBlack.ttf +NotoSerifArmenian-ExtraCondensedBold.ttf +NotoSerifArmenian-ExtraCondensedExtraBold.ttf +NotoSerifArmenian-ExtraCondensedExtraLight.ttf +NotoSerifArmenian-ExtraCondensedLight.ttf +NotoSerifArmenian-ExtraCondensedMedium.ttf +NotoSerifArmenian-ExtraCondensedSemiBold.ttf +NotoSerifArmenian-ExtraCondensedThin.ttf +NotoSerifArmenian-ExtraLight.ttf +NotoSerifArmenian-Light.ttf +NotoSerifArmenian-Medium.ttf +NotoSerifArmenian-Regular.ttf +NotoSerifArmenian-SemiBold.ttf +NotoSerifArmenian-SemiCondensed.ttf +NotoSerifArmenian-SemiCondensedBlack.ttf +NotoSerifArmenian-SemiCondensedBold.ttf +NotoSerifArmenian-SemiCondensedExtraBold.ttf +NotoSerifArmenian-SemiCondensedExtraLight.ttf +NotoSerifArmenian-SemiCondensedLight.ttf +NotoSerifArmenian-SemiCondensedMedium.ttf +NotoSerifArmenian-SemiCondensedSemiBold.ttf +NotoSerifArmenian-SemiCondensedThin.ttf +NotoSerifArmenian-Thin.ttf +NotoSerifArmenian[wdth,wght].ttf +NotoSerifBalinese-Regular.ttf +NotoSerifBengali-Black.ttf +NotoSerifBengali-Bold.ttf +NotoSerifBengali-Condensed.ttf +NotoSerifBengali-CondensedBlack.ttf +NotoSerifBengali-CondensedBold.ttf +NotoSerifBengali-CondensedExtraBold.ttf +NotoSerifBengali-CondensedExtraLight.ttf +NotoSerifBengali-CondensedLight.ttf +NotoSerifBengali-CondensedMedium.ttf +NotoSerifBengali-CondensedSemiBold.ttf +NotoSerifBengali-CondensedThin.ttf +NotoSerifBengali-ExtraBold.ttf +NotoSerifBengali-ExtraCondensed.ttf +NotoSerifBengali-ExtraCondensedBlack.ttf +NotoSerifBengali-ExtraCondensedBold.ttf +NotoSerifBengali-ExtraCondensedExtraBold.ttf +NotoSerifBengali-ExtraCondensedExtraLight.ttf +NotoSerifBengali-ExtraCondensedLight.ttf +NotoSerifBengali-ExtraCondensedMedium.ttf +NotoSerifBengali-ExtraCondensedSemiBold.ttf +NotoSerifBengali-ExtraCondensedThin.ttf +NotoSerifBengali-ExtraLight.ttf +NotoSerifBengali-Light.ttf +NotoSerifBengali-Medium.ttf +NotoSerifBengali-Regular.ttf +NotoSerifBengali-SemiBold.ttf +NotoSerifBengali-SemiCondensed.ttf +NotoSerifBengali-SemiCondensedBlack.ttf +NotoSerifBengali-SemiCondensedBold.ttf +NotoSerifBengali-SemiCondensedExtraBold.ttf +NotoSerifBengali-SemiCondensedExtraLight.ttf +NotoSerifBengali-SemiCondensedLight.ttf +NotoSerifBengali-SemiCondensedMedium.ttf +NotoSerifBengali-SemiCondensedSemiBold.ttf +NotoSerifBengali-SemiCondensedThin.ttf +NotoSerifBengali-Thin.ttf +NotoSerifBengali[wdth,wght].ttf +NotoSerifDevanagari-Black.ttf +NotoSerifDevanagari-Bold.ttf +NotoSerifDevanagari-Condensed.ttf +NotoSerifDevanagari-CondensedBlack.ttf +NotoSerifDevanagari-CondensedBold.ttf +NotoSerifDevanagari-CondensedExtraBold.ttf +NotoSerifDevanagari-CondensedExtraLight.ttf +NotoSerifDevanagari-CondensedLight.ttf +NotoSerifDevanagari-CondensedMedium.ttf +NotoSerifDevanagari-CondensedSemiBold.ttf +NotoSerifDevanagari-CondensedThin.ttf +NotoSerifDevanagari-ExtraBold.ttf +NotoSerifDevanagari-ExtraCondensed.ttf +NotoSerifDevanagari-ExtraCondensedBlack.ttf +NotoSerifDevanagari-ExtraCondensedBold.ttf +NotoSerifDevanagari-ExtraCondensedExtraBold.ttf +NotoSerifDevanagari-ExtraCondensedExtraLight.ttf +NotoSerifDevanagari-ExtraCondensedLight.ttf +NotoSerifDevanagari-ExtraCondensedMedium.ttf +NotoSerifDevanagari-ExtraCondensedSemiBold.ttf +NotoSerifDevanagari-ExtraCondensedThin.ttf +NotoSerifDevanagari-ExtraLight.ttf +NotoSerifDevanagari-Light.ttf +NotoSerifDevanagari-Medium.ttf +NotoSerifDevanagari-Regular.ttf +NotoSerifDevanagari-SemiBold.ttf +NotoSerifDevanagari-SemiCondensed.ttf +NotoSerifDevanagari-SemiCondensedBlack.ttf +NotoSerifDevanagari-SemiCondensedBold.ttf +NotoSerifDevanagari-SemiCondensedExtraBold.ttf +NotoSerifDevanagari-SemiCondensedExtraLight.ttf +NotoSerifDevanagari-SemiCondensedLight.ttf +NotoSerifDevanagari-SemiCondensedMedium.ttf +NotoSerifDevanagari-SemiCondensedSemiBold.ttf +NotoSerifDevanagari-SemiCondensedThin.ttf +NotoSerifDevanagari-Thin.ttf +NotoSerifDevanagari[wdth,wght].ttf +NotoSerifDisplay-Black.ttf +NotoSerifDisplay-BlackItalic.ttf +NotoSerifDisplay-Bold.ttf +NotoSerifDisplay-BoldItalic.ttf +NotoSerifDisplay-Condensed.ttf +NotoSerifDisplay-CondensedBlack.ttf +NotoSerifDisplay-CondensedBlackItalic.ttf +NotoSerifDisplay-CondensedBold.ttf +NotoSerifDisplay-CondensedBoldItalic.ttf +NotoSerifDisplay-CondensedExtraBold.ttf +NotoSerifDisplay-CondensedExtraBoldItalic.ttf +NotoSerifDisplay-CondensedExtraLight.ttf +NotoSerifDisplay-CondensedExtraLightItalic.ttf +NotoSerifDisplay-CondensedItalic.ttf +NotoSerifDisplay-CondensedLight.ttf +NotoSerifDisplay-CondensedLightItalic.ttf +NotoSerifDisplay-CondensedMedium.ttf +NotoSerifDisplay-CondensedMediumItalic.ttf +NotoSerifDisplay-CondensedSemiBold.ttf +NotoSerifDisplay-CondensedSemiBoldItalic.ttf +NotoSerifDisplay-CondensedThin.ttf +NotoSerifDisplay-CondensedThinItalic.ttf +NotoSerifDisplay-ExtraBold.ttf +NotoSerifDisplay-ExtraBoldItalic.ttf +NotoSerifDisplay-ExtraCondensed.ttf +NotoSerifDisplay-ExtraCondensedBlack.ttf +NotoSerifDisplay-ExtraCondensedBlackItalic.ttf +NotoSerifDisplay-ExtraCondensedBold.ttf +NotoSerifDisplay-ExtraCondensedBoldItalic.ttf +NotoSerifDisplay-ExtraCondensedExtraBold.ttf +NotoSerifDisplay-ExtraCondensedExtraBoldItalic.ttf +NotoSerifDisplay-ExtraCondensedExtraLight.ttf +NotoSerifDisplay-ExtraCondensedExtraLightItalic.ttf +NotoSerifDisplay-ExtraCondensedItalic.ttf +NotoSerifDisplay-ExtraCondensedLight.ttf +NotoSerifDisplay-ExtraCondensedLightItalic.ttf +NotoSerifDisplay-ExtraCondensedMedium.ttf +NotoSerifDisplay-ExtraCondensedMediumItalic.ttf +NotoSerifDisplay-ExtraCondensedSemiBold.ttf +NotoSerifDisplay-ExtraCondensedSemiBoldItalic.ttf +NotoSerifDisplay-ExtraCondensedThin.ttf +NotoSerifDisplay-ExtraCondensedThinItalic.ttf +NotoSerifDisplay-ExtraLight.ttf +NotoSerifDisplay-ExtraLightItalic.ttf +NotoSerifDisplay-Italic.ttf +NotoSerifDisplay-Italic[wdth,wght].ttf +NotoSerifDisplay-Light.ttf +NotoSerifDisplay-LightItalic.ttf +NotoSerifDisplay-Medium.ttf +NotoSerifDisplay-MediumItalic.ttf +NotoSerifDisplay-Regular.ttf +NotoSerifDisplay-SemiBold.ttf +NotoSerifDisplay-SemiBoldItalic.ttf +NotoSerifDisplay-SemiCondensed.ttf +NotoSerifDisplay-SemiCondensedBlack.ttf +NotoSerifDisplay-SemiCondensedBlackItalic.ttf +NotoSerifDisplay-SemiCondensedBold.ttf +NotoSerifDisplay-SemiCondensedBoldItalic.ttf +NotoSerifDisplay-SemiCondensedExtraBold.ttf +NotoSerifDisplay-SemiCondensedExtraBoldItalic.ttf +NotoSerifDisplay-SemiCondensedExtraLight.ttf +NotoSerifDisplay-SemiCondensedExtraLightItalic.ttf +NotoSerifDisplay-SemiCondensedItalic.ttf +NotoSerifDisplay-SemiCondensedLight.ttf +NotoSerifDisplay-SemiCondensedLightItalic.ttf +NotoSerifDisplay-SemiCondensedMedium.ttf +NotoSerifDisplay-SemiCondensedMediumItalic.ttf +NotoSerifDisplay-SemiCondensedSemiBold.ttf +NotoSerifDisplay-SemiCondensedSemiBoldItalic.ttf +NotoSerifDisplay-SemiCondensedThin.ttf +NotoSerifDisplay-SemiCondensedThinItalic.ttf +NotoSerifDisplay-Thin.ttf +NotoSerifDisplay-ThinItalic.ttf +NotoSerifDisplay[wdth,wght].ttf +NotoSerifDogra-Regular.ttf +NotoSerifEthiopic-Black.ttf +NotoSerifEthiopic-Bold.ttf +NotoSerifEthiopic-Condensed.ttf +NotoSerifEthiopic-CondensedBlack.ttf +NotoSerifEthiopic-CondensedBold.ttf +NotoSerifEthiopic-CondensedExtraBold.ttf +NotoSerifEthiopic-CondensedExtraLight.ttf +NotoSerifEthiopic-CondensedLight.ttf +NotoSerifEthiopic-CondensedMedium.ttf +NotoSerifEthiopic-CondensedSemiBold.ttf +NotoSerifEthiopic-CondensedThin.ttf +NotoSerifEthiopic-ExtraBold.ttf +NotoSerifEthiopic-ExtraCondensed.ttf +NotoSerifEthiopic-ExtraCondensedBlack.ttf +NotoSerifEthiopic-ExtraCondensedBold.ttf +NotoSerifEthiopic-ExtraCondensedExtraBold.ttf +NotoSerifEthiopic-ExtraCondensedExtraLight.ttf +NotoSerifEthiopic-ExtraCondensedLight.ttf +NotoSerifEthiopic-ExtraCondensedMedium.ttf +NotoSerifEthiopic-ExtraCondensedSemiBold.ttf +NotoSerifEthiopic-ExtraCondensedThin.ttf +NotoSerifEthiopic-ExtraLight.ttf +NotoSerifEthiopic-Light.ttf +NotoSerifEthiopic-Medium.ttf +NotoSerifEthiopic-Regular.ttf +NotoSerifEthiopic-SemiBold.ttf +NotoSerifEthiopic-SemiCondensed.ttf +NotoSerifEthiopic-SemiCondensedBlack.ttf +NotoSerifEthiopic-SemiCondensedBold.ttf +NotoSerifEthiopic-SemiCondensedExtraBold.ttf +NotoSerifEthiopic-SemiCondensedExtraLight.ttf +NotoSerifEthiopic-SemiCondensedLight.ttf +NotoSerifEthiopic-SemiCondensedMedium.ttf +NotoSerifEthiopic-SemiCondensedSemiBold.ttf +NotoSerifEthiopic-SemiCondensedThin.ttf +NotoSerifEthiopic-Thin.ttf +NotoSerifEthiopic[wdth,wght].ttf +NotoSerifGeorgian-Black.ttf +NotoSerifGeorgian-Bold.ttf +NotoSerifGeorgian-Condensed.ttf +NotoSerifGeorgian-CondensedBlack.ttf +NotoSerifGeorgian-CondensedBold.ttf +NotoSerifGeorgian-CondensedExtraBold.ttf +NotoSerifGeorgian-CondensedExtraLight.ttf +NotoSerifGeorgian-CondensedLight.ttf +NotoSerifGeorgian-CondensedMedium.ttf +NotoSerifGeorgian-CondensedSemiBold.ttf +NotoSerifGeorgian-CondensedThin.ttf +NotoSerifGeorgian-ExtraBold.ttf +NotoSerifGeorgian-ExtraCondensed.ttf +NotoSerifGeorgian-ExtraCondensedBlack.ttf +NotoSerifGeorgian-ExtraCondensedBold.ttf +NotoSerifGeorgian-ExtraCondensedExtraBold.ttf +NotoSerifGeorgian-ExtraCondensedExtraLight.ttf +NotoSerifGeorgian-ExtraCondensedLight.ttf +NotoSerifGeorgian-ExtraCondensedMedium.ttf +NotoSerifGeorgian-ExtraCondensedSemiBold.ttf +NotoSerifGeorgian-ExtraCondensedThin.ttf +NotoSerifGeorgian-ExtraLight.ttf +NotoSerifGeorgian-Light.ttf +NotoSerifGeorgian-Medium.ttf +NotoSerifGeorgian-Regular.ttf +NotoSerifGeorgian-SemiBold.ttf +NotoSerifGeorgian-SemiCondensed.ttf +NotoSerifGeorgian-SemiCondensedBlack.ttf +NotoSerifGeorgian-SemiCondensedBold.ttf +NotoSerifGeorgian-SemiCondensedExtraBold.ttf +NotoSerifGeorgian-SemiCondensedExtraLight.ttf +NotoSerifGeorgian-SemiCondensedLight.ttf +NotoSerifGeorgian-SemiCondensedMedium.ttf +NotoSerifGeorgian-SemiCondensedSemiBold.ttf +NotoSerifGeorgian-SemiCondensedThin.ttf +NotoSerifGeorgian-Thin.ttf +NotoSerifGeorgian[wdth,wght].ttf +NotoSerifGrantha-Regular.ttf +NotoSerifGujarati-Black.ttf +NotoSerifGujarati-Bold.ttf +NotoSerifGujarati-ExtraBold.ttf +NotoSerifGujarati-ExtraLight.ttf +NotoSerifGujarati-Light.ttf +NotoSerifGujarati-Medium.ttf +NotoSerifGujarati-Regular.ttf +NotoSerifGujarati-SemiBold.ttf +NotoSerifGujarati-Thin.ttf +NotoSerifGujarati[wght].ttf +NotoSerifGurmukhi-Black.ttf +NotoSerifGurmukhi-Bold.ttf +NotoSerifGurmukhi-ExtraBold.ttf +NotoSerifGurmukhi-ExtraLight.ttf +NotoSerifGurmukhi-Light.ttf +NotoSerifGurmukhi-Medium.ttf +NotoSerifGurmukhi-Regular.ttf +NotoSerifGurmukhi-SemiBold.ttf +NotoSerifGurmukhi-Thin.ttf +NotoSerifGurmukhi[wght].ttf +NotoSerifHK[wght].ttf +NotoSerifHebrew-Black.ttf +NotoSerifHebrew-Bold.ttf +NotoSerifHebrew-Condensed.ttf +NotoSerifHebrew-CondensedBlack.ttf +NotoSerifHebrew-CondensedBold.ttf +NotoSerifHebrew-CondensedExtraBold.ttf +NotoSerifHebrew-CondensedExtraLight.ttf +NotoSerifHebrew-CondensedLight.ttf +NotoSerifHebrew-CondensedMedium.ttf +NotoSerifHebrew-CondensedSemiBold.ttf +NotoSerifHebrew-CondensedThin.ttf +NotoSerifHebrew-ExtraBold.ttf +NotoSerifHebrew-ExtraCondensed.ttf +NotoSerifHebrew-ExtraCondensedBlack.ttf +NotoSerifHebrew-ExtraCondensedBold.ttf +NotoSerifHebrew-ExtraCondensedExtraBold.ttf +NotoSerifHebrew-ExtraCondensedExtraLight.ttf +NotoSerifHebrew-ExtraCondensedLight.ttf +NotoSerifHebrew-ExtraCondensedMedium.ttf +NotoSerifHebrew-ExtraCondensedSemiBold.ttf +NotoSerifHebrew-ExtraCondensedThin.ttf +NotoSerifHebrew-ExtraLight.ttf +NotoSerifHebrew-Light.ttf +NotoSerifHebrew-Medium.ttf +NotoSerifHebrew-Regular.ttf +NotoSerifHebrew-SemiBold.ttf +NotoSerifHebrew-SemiCondensed.ttf +NotoSerifHebrew-SemiCondensedBlack.ttf +NotoSerifHebrew-SemiCondensedBold.ttf +NotoSerifHebrew-SemiCondensedExtraBold.ttf +NotoSerifHebrew-SemiCondensedExtraLight.ttf +NotoSerifHebrew-SemiCondensedLight.ttf +NotoSerifHebrew-SemiCondensedMedium.ttf +NotoSerifHebrew-SemiCondensedSemiBold.ttf +NotoSerifHebrew-SemiCondensedThin.ttf +NotoSerifHebrew-Thin.ttf +NotoSerifHebrew[wdth,wght].ttf +NotoSerifJP[wght].ttf +NotoSerifKR[wght].ttf +NotoSerifKannada-Black.ttf +NotoSerifKannada-Bold.ttf +NotoSerifKannada-ExtraBold.ttf +NotoSerifKannada-ExtraLight.ttf +NotoSerifKannada-Light.ttf +NotoSerifKannada-Medium.ttf +NotoSerifKannada-Regular.ttf +NotoSerifKannada-SemiBold.ttf +NotoSerifKannada-Thin.ttf +NotoSerifKannada[wght].ttf +NotoSerifKhmer-Black.ttf +NotoSerifKhmer-Bold.ttf +NotoSerifKhmer-Condensed.ttf +NotoSerifKhmer-CondensedBlack.ttf +NotoSerifKhmer-CondensedBold.ttf +NotoSerifKhmer-CondensedExtraBold.ttf +NotoSerifKhmer-CondensedExtraLight.ttf +NotoSerifKhmer-CondensedLight.ttf +NotoSerifKhmer-CondensedMedium.ttf +NotoSerifKhmer-CondensedSemiBold.ttf +NotoSerifKhmer-CondensedThin.ttf +NotoSerifKhmer-ExtraBold.ttf +NotoSerifKhmer-ExtraCondensed.ttf +NotoSerifKhmer-ExtraCondensedBlack.ttf +NotoSerifKhmer-ExtraCondensedBold.ttf +NotoSerifKhmer-ExtraCondensedExtraBold.ttf +NotoSerifKhmer-ExtraCondensedExtraLight.ttf +NotoSerifKhmer-ExtraCondensedLight.ttf +NotoSerifKhmer-ExtraCondensedMedium.ttf +NotoSerifKhmer-ExtraCondensedSemiBold.ttf +NotoSerifKhmer-ExtraCondensedThin.ttf +NotoSerifKhmer-ExtraLight.ttf +NotoSerifKhmer-Light.ttf +NotoSerifKhmer-Medium.ttf +NotoSerifKhmer-Regular.ttf +NotoSerifKhmer-SemiBold.ttf +NotoSerifKhmer-SemiCondensed.ttf +NotoSerifKhmer-SemiCondensedBlack.ttf +NotoSerifKhmer-SemiCondensedBold.ttf +NotoSerifKhmer-SemiCondensedExtraBold.ttf +NotoSerifKhmer-SemiCondensedExtraLight.ttf +NotoSerifKhmer-SemiCondensedLight.ttf +NotoSerifKhmer-SemiCondensedMedium.ttf +NotoSerifKhmer-SemiCondensedSemiBold.ttf +NotoSerifKhmer-SemiCondensedThin.ttf +NotoSerifKhmer-Thin.ttf +NotoSerifKhmer[wdth,wght].ttf +NotoSerifKhojki-Bold.ttf +NotoSerifKhojki-Regular.ttf +NotoSerifKhojki[wght].ttf +NotoSerifLao-Black.ttf +NotoSerifLao-Bold.ttf +NotoSerifLao-Condensed.ttf +NotoSerifLao-CondensedBlack.ttf +NotoSerifLao-CondensedBold.ttf +NotoSerifLao-CondensedExtraBold.ttf +NotoSerifLao-CondensedExtraLight.ttf +NotoSerifLao-CondensedLight.ttf +NotoSerifLao-CondensedMedium.ttf +NotoSerifLao-CondensedSemiBold.ttf +NotoSerifLao-CondensedThin.ttf +NotoSerifLao-ExtraBold.ttf +NotoSerifLao-ExtraCondensed.ttf +NotoSerifLao-ExtraCondensedBlack.ttf +NotoSerifLao-ExtraCondensedBold.ttf +NotoSerifLao-ExtraCondensedExtraBold.ttf +NotoSerifLao-ExtraCondensedExtraLight.ttf +NotoSerifLao-ExtraCondensedLight.ttf +NotoSerifLao-ExtraCondensedMedium.ttf +NotoSerifLao-ExtraCondensedSemiBold.ttf +NotoSerifLao-ExtraCondensedThin.ttf +NotoSerifLao-ExtraLight.ttf +NotoSerifLao-Light.ttf +NotoSerifLao-Medium.ttf +NotoSerifLao-Regular.ttf +NotoSerifLao-SemiBold.ttf +NotoSerifLao-SemiCondensed.ttf +NotoSerifLao-SemiCondensedBlack.ttf +NotoSerifLao-SemiCondensedBold.ttf +NotoSerifLao-SemiCondensedExtraBold.ttf +NotoSerifLao-SemiCondensedExtraLight.ttf +NotoSerifLao-SemiCondensedLight.ttf +NotoSerifLao-SemiCondensedMedium.ttf +NotoSerifLao-SemiCondensedSemiBold.ttf +NotoSerifLao-SemiCondensedThin.ttf +NotoSerifLao-Thin.ttf +NotoSerifLao[wdth,wght].ttf +NotoSerifMalayalam-Black.ttf +NotoSerifMalayalam-Bold.ttf +NotoSerifMalayalam-ExtraBold.ttf +NotoSerifMalayalam-ExtraLight.ttf +NotoSerifMalayalam-Light.ttf +NotoSerifMalayalam-Medium.ttf +NotoSerifMalayalam-Regular.ttf +NotoSerifMalayalam-SemiBold.ttf +NotoSerifMalayalam-Thin.ttf +NotoSerifMalayalam[wght].ttf +NotoSerifMyanmar-Black.ttf +NotoSerifMyanmar-Bold.ttf +NotoSerifMyanmar-Condensed.ttf +NotoSerifMyanmar-CondensedBlack.ttf +NotoSerifMyanmar-CondensedBold.ttf +NotoSerifMyanmar-CondensedExtraBold.ttf +NotoSerifMyanmar-CondensedExtraLight.ttf +NotoSerifMyanmar-CondensedLight.ttf +NotoSerifMyanmar-CondensedMedium.ttf +NotoSerifMyanmar-CondensedSemiBold.ttf +NotoSerifMyanmar-CondensedThin.ttf +NotoSerifMyanmar-ExtraBold.ttf +NotoSerifMyanmar-ExtraCondensed.ttf +NotoSerifMyanmar-ExtraCondensedBlack.ttf +NotoSerifMyanmar-ExtraCondensedBold.ttf +NotoSerifMyanmar-ExtraCondensedExtraBold.ttf +NotoSerifMyanmar-ExtraCondensedExtraLight.ttf +NotoSerifMyanmar-ExtraCondensedLight.ttf +NotoSerifMyanmar-ExtraCondensedMedium.ttf +NotoSerifMyanmar-ExtraCondensedSemiBold.ttf +NotoSerifMyanmar-ExtraCondensedThin.ttf +NotoSerifMyanmar-ExtraLight.ttf +NotoSerifMyanmar-Light.ttf +NotoSerifMyanmar-Medium.ttf +NotoSerifMyanmar-Regular.ttf +NotoSerifMyanmar-SemiBold.ttf +NotoSerifMyanmar-SemiCondensed.ttf +NotoSerifMyanmar-SemiCondensedBlack.ttf +NotoSerifMyanmar-SemiCondensedBold.ttf +NotoSerifMyanmar-SemiCondensedExtraBold.ttf +NotoSerifMyanmar-SemiCondensedExtraLight.ttf +NotoSerifMyanmar-SemiCondensedLight.ttf +NotoSerifMyanmar-SemiCondensedMedium.ttf +NotoSerifMyanmar-SemiCondensedSemiBold.ttf +NotoSerifMyanmar-SemiCondensedThin.ttf +NotoSerifMyanmar-Thin.ttf +NotoSerifNPHmong[wght].ttf +NotoSerifNyiakengPuachueHmong-Bold.ttf +NotoSerifNyiakengPuachueHmong-Medium.ttf +NotoSerifNyiakengPuachueHmong-Regular.ttf +NotoSerifNyiakengPuachueHmong-SemiBold.ttf +NotoSerifNyiakengPuachueHmong[wght].ttf +NotoSerifOriya[wght].ttf +NotoSerifSC[wght].ttf +NotoSerifSinhala-Black.ttf +NotoSerifSinhala-Bold.ttf +NotoSerifSinhala-Condensed.ttf +NotoSerifSinhala-CondensedBlack.ttf +NotoSerifSinhala-CondensedBold.ttf +NotoSerifSinhala-CondensedExtraBold.ttf +NotoSerifSinhala-CondensedExtraLight.ttf +NotoSerifSinhala-CondensedLight.ttf +NotoSerifSinhala-CondensedMedium.ttf +NotoSerifSinhala-CondensedSemiBold.ttf +NotoSerifSinhala-CondensedThin.ttf +NotoSerifSinhala-ExtraBold.ttf +NotoSerifSinhala-ExtraCondensed.ttf +NotoSerifSinhala-ExtraCondensedBlack.ttf +NotoSerifSinhala-ExtraCondensedBold.ttf +NotoSerifSinhala-ExtraCondensedExtraBold.ttf +NotoSerifSinhala-ExtraCondensedExtraLight.ttf +NotoSerifSinhala-ExtraCondensedLight.ttf +NotoSerifSinhala-ExtraCondensedMedium.ttf +NotoSerifSinhala-ExtraCondensedSemiBold.ttf +NotoSerifSinhala-ExtraCondensedThin.ttf +NotoSerifSinhala-ExtraLight.ttf +NotoSerifSinhala-Light.ttf +NotoSerifSinhala-Medium.ttf +NotoSerifSinhala-Regular.ttf +NotoSerifSinhala-SemiBold.ttf +NotoSerifSinhala-SemiCondensed.ttf +NotoSerifSinhala-SemiCondensedBlack.ttf +NotoSerifSinhala-SemiCondensedBold.ttf +NotoSerifSinhala-SemiCondensedExtraBold.ttf +NotoSerifSinhala-SemiCondensedExtraLight.ttf +NotoSerifSinhala-SemiCondensedLight.ttf +NotoSerifSinhala-SemiCondensedMedium.ttf +NotoSerifSinhala-SemiCondensedSemiBold.ttf +NotoSerifSinhala-SemiCondensedThin.ttf +NotoSerifSinhala-Thin.ttf +NotoSerifSinhala[wdth,wght].ttf +NotoSerifTC[wght].ttf +NotoSerifTamil-Black.ttf +NotoSerifTamil-Bold.ttf +NotoSerifTamil-Condensed.ttf +NotoSerifTamil-CondensedBlack.ttf +NotoSerifTamil-CondensedBold.ttf +NotoSerifTamil-CondensedExtraBold.ttf +NotoSerifTamil-CondensedExtraLight.ttf +NotoSerifTamil-CondensedLight.ttf +NotoSerifTamil-CondensedMedium.ttf +NotoSerifTamil-CondensedSemiBold.ttf +NotoSerifTamil-CondensedThin.ttf +NotoSerifTamil-ExtraBold.ttf +NotoSerifTamil-ExtraCondensed.ttf +NotoSerifTamil-ExtraCondensedBlack.ttf +NotoSerifTamil-ExtraCondensedBold.ttf +NotoSerifTamil-ExtraCondensedExtraBold.ttf +NotoSerifTamil-ExtraCondensedExtraLight.ttf +NotoSerifTamil-ExtraCondensedLight.ttf +NotoSerifTamil-ExtraCondensedMedium.ttf +NotoSerifTamil-ExtraCondensedSemiBold.ttf +NotoSerifTamil-ExtraCondensedThin.ttf +NotoSerifTamil-ExtraLight.ttf +NotoSerifTamil-Italic[wdth,wght].ttf +NotoSerifTamil-Light.ttf +NotoSerifTamil-Medium.ttf +NotoSerifTamil-Regular.ttf +NotoSerifTamil-SemiBold.ttf +NotoSerifTamil-SemiCondensed.ttf +NotoSerifTamil-SemiCondensedBlack.ttf +NotoSerifTamil-SemiCondensedBold.ttf +NotoSerifTamil-SemiCondensedExtraBold.ttf +NotoSerifTamil-SemiCondensedExtraLight.ttf +NotoSerifTamil-SemiCondensedLight.ttf +NotoSerifTamil-SemiCondensedMedium.ttf +NotoSerifTamil-SemiCondensedSemiBold.ttf +NotoSerifTamil-SemiCondensedThin.ttf +NotoSerifTamil-Thin.ttf +NotoSerifTamilSlanted-Black.ttf +NotoSerifTamilSlanted-Bold.ttf +NotoSerifTamilSlanted-Condensed.ttf +NotoSerifTamilSlanted-CondensedBlack.ttf +NotoSerifTamilSlanted-CondensedBold.ttf +NotoSerifTamilSlanted-CondensedExtraBold.ttf +NotoSerifTamilSlanted-CondensedExtraLight.ttf +NotoSerifTamilSlanted-CondensedLight.ttf +NotoSerifTamilSlanted-CondensedMedium.ttf +NotoSerifTamilSlanted-CondensedSemiBold.ttf +NotoSerifTamilSlanted-CondensedThin.ttf +NotoSerifTamilSlanted-ExtraBold.ttf +NotoSerifTamilSlanted-ExtraCondensed.ttf +NotoSerifTamilSlanted-ExtraCondensedBlack.ttf +NotoSerifTamilSlanted-ExtraCondensedBold.ttf +NotoSerifTamilSlanted-ExtraCondensedExtraBold.ttf +NotoSerifTamilSlanted-ExtraCondensedExtraLight.ttf +NotoSerifTamilSlanted-ExtraCondensedLight.ttf +NotoSerifTamilSlanted-ExtraCondensedMedium.ttf +NotoSerifTamilSlanted-ExtraCondensedSemiBold.ttf +NotoSerifTamilSlanted-ExtraCondensedThin.ttf +NotoSerifTamilSlanted-ExtraLight.ttf +NotoSerifTamilSlanted-Light.ttf +NotoSerifTamilSlanted-Medium.ttf +NotoSerifTamilSlanted-Regular.ttf +NotoSerifTamilSlanted-SemiBold.ttf +NotoSerifTamilSlanted-SemiCondensed.ttf +NotoSerifTamilSlanted-SemiCondensedBlack.ttf +NotoSerifTamilSlanted-SemiCondensedBold.ttf +NotoSerifTamilSlanted-SemiCondensedExtraBold.ttf +NotoSerifTamilSlanted-SemiCondensedExtraLight.ttf +NotoSerifTamilSlanted-SemiCondensedLight.ttf +NotoSerifTamilSlanted-SemiCondensedMedium.ttf +NotoSerifTamilSlanted-SemiCondensedSemiBold.ttf +NotoSerifTamilSlanted-SemiCondensedThin.ttf +NotoSerifTamilSlanted-Thin.ttf +NotoSerifTamil[wdth,wght].ttf +NotoSerifTangut-Regular.ttf +NotoSerifTelugu-Black.ttf +NotoSerifTelugu-Bold.ttf +NotoSerifTelugu-ExtraBold.ttf +NotoSerifTelugu-ExtraLight.ttf +NotoSerifTelugu-Light.ttf +NotoSerifTelugu-Medium.ttf +NotoSerifTelugu-Regular.ttf +NotoSerifTelugu-SemiBold.ttf +NotoSerifTelugu-Thin.ttf +NotoSerifTelugu[wght].ttf +NotoSerifThai-Black.ttf +NotoSerifThai-Bold.ttf +NotoSerifThai-Condensed.ttf +NotoSerifThai-CondensedBlack.ttf +NotoSerifThai-CondensedBold.ttf +NotoSerifThai-CondensedExtraBold.ttf +NotoSerifThai-CondensedExtraLight.ttf +NotoSerifThai-CondensedLight.ttf +NotoSerifThai-CondensedMedium.ttf +NotoSerifThai-CondensedSemiBold.ttf +NotoSerifThai-CondensedThin.ttf +NotoSerifThai-ExtraBold.ttf +NotoSerifThai-ExtraCondensed.ttf +NotoSerifThai-ExtraCondensedBlack.ttf +NotoSerifThai-ExtraCondensedBold.ttf +NotoSerifThai-ExtraCondensedExtraBold.ttf +NotoSerifThai-ExtraCondensedExtraLight.ttf +NotoSerifThai-ExtraCondensedLight.ttf +NotoSerifThai-ExtraCondensedMedium.ttf +NotoSerifThai-ExtraCondensedSemiBold.ttf +NotoSerifThai-ExtraCondensedThin.ttf +NotoSerifThai-ExtraLight.ttf +NotoSerifThai-Light.ttf +NotoSerifThai-Medium.ttf +NotoSerifThai-Regular.ttf +NotoSerifThai-SemiBold.ttf +NotoSerifThai-SemiCondensed.ttf +NotoSerifThai-SemiCondensedBlack.ttf +NotoSerifThai-SemiCondensedBold.ttf +NotoSerifThai-SemiCondensedExtraBold.ttf +NotoSerifThai-SemiCondensedExtraLight.ttf +NotoSerifThai-SemiCondensedLight.ttf +NotoSerifThai-SemiCondensedMedium.ttf +NotoSerifThai-SemiCondensedSemiBold.ttf +NotoSerifThai-SemiCondensedThin.ttf +NotoSerifThai-Thin.ttf +NotoSerifThai[wdth,wght].ttf +NotoSerifTibetan-Black.ttf +NotoSerifTibetan-Bold.ttf +NotoSerifTibetan-ExtraBold.ttf +NotoSerifTibetan-ExtraLight.ttf +NotoSerifTibetan-Light.ttf +NotoSerifTibetan-Medium.ttf +NotoSerifTibetan-Regular.ttf +NotoSerifTibetan-SemiBold.ttf +NotoSerifTibetan-Thin.ttf +NotoSerifTibetan[wght].ttf +NotoSerifToto[wght].ttf +NotoSerifYezidi-Bold.ttf +NotoSerifYezidi-Medium.ttf +NotoSerifYezidi-Regular.ttf +NotoSerifYezidi-SemiBold.ttf +NotoSerifYezidi[wght].ttf +NotoSerif[wdth,wght].ttf +NotoTraditionalNushu-Regular.ttf +NotoTraditionalNushu[wght].ttf +NovaCut.ttf +NovaFlat.ttf +NovaMono.ttf +NovaOval.ttf +NovaRound.ttf +NovaScript-Regular.ttf +NovaSlim.ttf +NovaSquare.ttf +Numans-Regular.ttf +Nunito-Italic[wght].ttf +Nunito-Regular.ttf +NunitoSans-Italic[YTLC,opsz,wdth,wght].ttf +NunitoSans[YTLC,opsz,wdth,wght].ttf +Nunito[wght].ttf +NuosuSIL-Regular.ttf +OFLGoudyStMTT-Italic.ttf +OFLGoudyStMTT.ttf +OdibeeSans-Regular.ttf +OdorMeanChey-Regular.ttf +Offside-Regular.ttf +Oi-Regular.ttf +OldStandard-Bold.ttf +OldStandard-Italic.ttf +OldStandard-Regular.ttf +Oldenburg-Regular.ttf +Ole-Regular.ttf +OleoScript-Bold.ttf +OleoScript-Regular.ttf +OleoScriptSwashCaps-Bold.ttf +OleoScriptSwashCaps-Regular.ttf +OoohBaby-Regular.ttf +OpenSans-Italic[wdth,wght].ttf +OpenSansCondensed-Italic[wght].ttf +OpenSansCondensed[wght].ttf +OpenSansHebrew-Bold.ttf +OpenSansHebrew-BoldItalic.ttf +OpenSansHebrew-ExtraBold.ttf +OpenSansHebrew-ExtraBoldItalic.ttf +OpenSansHebrew-Italic.ttf +OpenSansHebrew-Light.ttf +OpenSansHebrew-LightItalic.ttf +OpenSansHebrew-Regular.ttf +OpenSansHebrewCondensed-Bold.ttf +OpenSansHebrewCondensed-BoldItalic.ttf +OpenSansHebrewCondensed-ExtraBold.ttf +OpenSansHebrewCondensed-ExtraBoldItalic.ttf +OpenSansHebrewCondensed-Italic.ttf +OpenSansHebrewCondensed-Light.ttf +OpenSansHebrewCondensed-LightItalic.ttf +OpenSansHebrewCondensed-Regular.ttf +OpenSans[wdth,wght].ttf +Oranienbaum-Regular.ttf +Orbitron[wght].ttf +Oregano-Italic.ttf +Oregano-Regular.ttf +OrelegaOne-Regular.ttf +Orienta-Regular.ttf +OriginalSurfer-Regular.ttf +Oswald[wght].ttf +OtomanopeeOne-Regular.ttf +Outfit[wght].ttf +Overlock-Black.ttf +Overlock-BlackItalic.ttf +Overlock-Bold.ttf +Overlock-BoldItalic.ttf +Overlock-Italic.ttf +Overlock-Regular.ttf +OverlockSC-Regular.ttf +Overpass-Italic[wght].ttf +OverpassMono[wght].ttf +Overpass[wght].ttf +OvertheRainbow.ttf +Ovo-Regular.ttf +Oxanium[wght].ttf +Oxygen-Bold.ttf +Oxygen-Light.ttf +Oxygen-Regular.ttf +OxygenMono-Regular.ttf +P052-Bold.otf +P052-Bold.t1 +P052-BoldItalic.otf +P052-BoldItalic.t1 +P052-Italic.otf +P052-Italic.t1 +P052-Roman.otf +P052-Roman.t1 +PTM55FT.ttf +PT_Sans-Caption-Web-Bold.ttf +PT_Sans-Caption-Web-Regular.ttf +PT_Sans-Narrow-Web-Bold.ttf +PT_Sans-Narrow-Web-Regular.ttf +PT_Sans-Web-Bold.ttf +PT_Sans-Web-BoldItalic.ttf +PT_Sans-Web-Italic.ttf +PT_Sans-Web-Regular.ttf +PT_Serif-Caption-Web-Italic.ttf +PT_Serif-Caption-Web-Regular.ttf +PT_Serif-Web-Bold.ttf +PT_Serif-Web-BoldItalic.ttf +PT_Serif-Web-Italic.ttf +PT_Serif-Web-Regular.ttf +Pacifico-Regular.ttf +Padauk-Bold.ttf +Padauk-Regular.ttf +PadyakkeExpandedOne-Regular.ttf +Palanquin-Bold.ttf +Palanquin-ExtraLight.ttf +Palanquin-Light.ttf +Palanquin-Medium.ttf +Palanquin-Regular.ttf +Palanquin-SemiBold.ttf +Palanquin-Thin.ttf +PalanquinDark-Bold.ttf +PalanquinDark-Medium.ttf +PalanquinDark-Regular.ttf +PalanquinDark-SemiBold.ttf +PaletteMosaic-Regular.ttf +Pangolin-Regular.ttf +Paprika-Regular.ttf +Parisienne-Regular.ttf +PasseroOne-Regular.ttf +PassionOne-Black.ttf +PassionOne-Bold.ttf +PassionOne-Regular.ttf +PassionsConflict-Regular.ttf +PathwayExtreme-Italic[opsz,wdth,wght].ttf +PathwayExtreme[opsz,wdth,wght].ttf +PathwayGothicOne-Regular.ttf +PatrickHand-Regular.ttf +PatrickHandSC-Regular.ttf +Pattaya-Regular.ttf +PatuaOne-Regular.ttf +Pavanam-Regular.ttf +PaytoneOne-Regular.ttf +Pecita.ttf +Peddana-Regular.ttf +Peralta-Regular.ttf +PermanentMarker-Regular.ttf +Petemoss-Regular.ttf +PetitFormalScript-Regular.ttf +Petrona-Italic[wght].ttf +Petrona[wght].ttf +Phetsarath-Bold.ttf +Phetsarath-Regular.ttf +Philosopher-Bold.ttf +Philosopher-BoldItalic.ttf +Philosopher-Italic.ttf +Philosopher-Regular.ttf +Phudu[wght].ttf +Piazzolla-Italic[opsz,wght].ttf +Piazzolla[opsz,wght].ttf +Piedra-Regular.ttf +PinyonScript-Regular.ttf +PirataOne-Regular.ttf +Plaster-Regular.ttf +Play-Bold.ttf +Play-Regular.ttf +Playball-Regular.ttf +Playfair-Italic[opsz,wdth,wght].ttf +PlayfairDisplay-Italic[wght].ttf +PlayfairDisplaySC-Black.ttf +PlayfairDisplaySC-BlackItalic.ttf +PlayfairDisplaySC-Bold.ttf +PlayfairDisplaySC-BoldItalic.ttf +PlayfairDisplaySC-Italic.ttf +PlayfairDisplaySC-Regular.ttf +PlayfairDisplay[wght].ttf +Playfair[opsz,wdth,wght].ttf +PlusJakartaSans-Italic[wght].ttf +PlusJakartaSans[wght].ttf +PodkovaVFBeta.ttf +Podkova[wght].ttf +PoetsenOne-Regular.ttf +PoiretOne-Regular.ttf +PollerOne.ttf +PoltawskiNowy-Italic[wght].ttf +PoltawskiNowy[wght].ttf +Poly-Italic.ttf +Poly-Regular.ttf +Pompiere-Regular.ttf +Ponnala-Regular.ttf +PontanoSans[wght].ttf +PoorStory-Regular.ttf +Poppins-Black.ttf +Poppins-BlackItalic.ttf +Poppins-Bold.ttf +Poppins-BoldItalic.ttf +Poppins-ExtraBold.ttf +Poppins-ExtraBoldItalic.ttf +Poppins-ExtraLight.ttf +Poppins-ExtraLightItalic.ttf +Poppins-Italic.ttf +Poppins-Light.ttf +Poppins-LightItalic.ttf +Poppins-Medium.ttf +Poppins-MediumItalic.ttf +Poppins-Regular.ttf +Poppins-SemiBold.ttf +Poppins-SemiBoldItalic.ttf +Poppins-Thin.ttf +Poppins-ThinItalic.ttf +PortLligatSans-Regular.ttf +PortLligatSlab-Regular.ttf +PorterSansBlock-Regular.ttf +PostNoBillsColombo-Bold.ttf +PostNoBillsColombo-ExtraBold.ttf +PostNoBillsColombo-Light.ttf +PostNoBillsColombo-Medium.ttf +PostNoBillsColombo-Regular.ttf +PostNoBillsColombo-SemiBold.ttf +PostNoBillsJaffna-Bold.ttf +PostNoBillsJaffna-ExtraBold.ttf +PostNoBillsJaffna-Light.ttf +PostNoBillsJaffna-Medium.ttf +PostNoBillsJaffna-Regular.ttf +PostNoBillsJaffna-SemiBold.ttf +PottaOne-Regular.ttf +PragatiNarrow-Bold.ttf +PragatiNarrow-Regular.ttf +Praise-Regular.ttf +Prata-Regular.ttf +Preahvihear-Regular.ttf +PressStart2P-Regular.ttf +Pridi-Bold.ttf +Pridi-ExtraLight.ttf +Pridi-Light.ttf +Pridi-Medium.ttf +Pridi-Regular.ttf +Pridi-SemiBold.ttf +PrincessSofia-Regular.ttf +Prociono-Regular.ttf +Prompt-Black.ttf +Prompt-BlackItalic.ttf +Prompt-Bold.ttf +Prompt-BoldItalic.ttf +Prompt-ExtraBold.ttf +Prompt-ExtraBoldItalic.ttf +Prompt-ExtraLight.ttf +Prompt-ExtraLightItalic.ttf +Prompt-Italic.ttf +Prompt-Light.ttf +Prompt-LightItalic.ttf +Prompt-Medium.ttf +Prompt-MediumItalic.ttf +Prompt-Regular.ttf +Prompt-SemiBold.ttf +Prompt-SemiBoldItalic.ttf +Prompt-Thin.ttf +Prompt-ThinItalic.ttf +ProstoOne-Regular.ttf +ProzaLibre-Bold.ttf +ProzaLibre-BoldItalic.ttf +ProzaLibre-ExtraBold.ttf +ProzaLibre-ExtraBoldItalic.ttf +ProzaLibre-Italic.ttf +ProzaLibre-Medium.ttf +ProzaLibre-MediumItalic.ttf +ProzaLibre-Regular.ttf +ProzaLibre-SemiBold.ttf +ProzaLibre-SemiBoldItalic.ttf +PublicSans-Italic[wght].ttf +PublicSans[wght].ttf +PuppiesPlay-Regular.ttf +Puritan-Bold.ttf +Puritan-BoldItalic.ttf +Puritan-Italic.ttf +Puritan-Regular.ttf +PurplePurse-Regular.ttf +Pushster-Regular.ttf +Qahiri-Regular.ttf +Quando-Regular.ttf +Quantico-Bold.ttf +Quantico-BoldItalic.ttf +Quantico-Italic.ttf +Quantico-Regular.ttf +Quattrocento-Bold.ttf +Quattrocento-Regular.ttf +QuattrocentoSans-Bold.ttf +QuattrocentoSans-BoldItalic.ttf +QuattrocentoSans-Italic.ttf +QuattrocentoSans-Regular.ttf +Questrial-Regular.ttf +Quicksand-Bold.ttf +Quicksand-Light.ttf +Quicksand-Medium.ttf +Quicksand-Regular.ttf +Quicksand[wght].ttf +Quintessential-Regular.ttf +Qwigley-Regular.ttf +QwitcherGrypen-Bold.ttf +QwitcherGrypen-Regular.ttf +RUSerius-Regular.ttf +RacingSansOne-Regular.ttf +RadioCanada-Italic[wdth,wght].ttf +RadioCanada[wdth,wght].ttf +Radley-Italic.ttf +Radley-Regular.ttf +Rajdhani-Bold.ttf +Rajdhani-Light.ttf +Rajdhani-Medium.ttf +Rajdhani-Regular.ttf +Rajdhani-SemiBold.ttf +Rakkas-Regular.ttf +Raleway-Italic[wght].ttf +RalewayDots-Regular.ttf +Raleway[wght].ttf +Ramabhadra-Regular.ttf +Ramaraja-Regular.ttf +Rambla-Bold.ttf +Rambla-BoldItalic.ttf +Rambla-Italic.ttf +Rambla-Regular.ttf +RammettoOne-Regular.ttf +RampartOne-Regular.ttf +Ranchers-Regular.ttf +Rancho-Regular.ttf +Ranga-Bold.ttf +Ranga-Regular.ttf +Rasa-Italic[wght].ttf +Rasa[wght].ttf +Rationale-Regular.ttf +RaviPrakash-Regular.ttf +ReadexPro[HEXP,wght].ttf +Recursive[CASL,CRSV,MONO,slnt,wght].ttf +RedHatDisplay-Italic[wght].ttf +RedHatDisplay[wght].ttf +RedHatMono-Italic[wght].ttf +RedHatMono[wght].ttf +RedHatText-Italic[wght].ttf +RedHatText[wght].ttf +RedRose[wght].ttf +Redacted-Regular.ttf +RedactedScript-Bold.ttf +RedactedScript-Light.ttf +RedactedScript-Regular.ttf +Redressed-Regular.ttf +ReemKufiFun[wght].ttf +ReemKufiInk-Regular.ttf +ReemKufi[wght].ttf +ReenieBeanie.ttf +ReggaeOne-Regular.ttf +Revalia-Regular.ttf +RhodiumLibre-Regular.ttf +Ribeye-Regular.ttf +RibeyeMarrow-Regular.ttf +Righteous-Regular.ttf +Risque-Regular.ttf +RoadRage-Regular.ttf +Roboto-Black.ttf +Roboto-BlackItalic.ttf +Roboto-Bold.ttf +Roboto-BoldItalic.ttf +Roboto-Italic.ttf +Roboto-Italic[wdth,wght].ttf +Roboto-Light.ttf +Roboto-LightItalic.ttf +Roboto-Medium.ttf +Roboto-MediumItalic.ttf +Roboto-Regular.ttf +Roboto-Thin.ttf +Roboto-ThinItalic.ttf +RobotoCondensed-Bold.ttf +RobotoCondensed-BoldItalic.ttf +RobotoCondensed-Italic.ttf +RobotoCondensed-Light.ttf +RobotoCondensed-LightItalic.ttf +RobotoCondensed-Medium.ttf +RobotoCondensed-MediumItalic.ttf +RobotoCondensed-Regular.ttf +RobotoFlex[GRAD,XOPQ,XTRA,YOPQ,YTAS,YTDE,YTFI,YTLC,YTUC,opsz,slnt,wdth,wght].ttf +RobotoMono-Italic[wght].ttf +RobotoMono[wght].ttf +RobotoSerif-Italic[GRAD,opsz,wdth,wght].ttf +RobotoSerif[GRAD,opsz,wdth,wght].ttf +RobotoSlab-Bold.otf +RobotoSlab-Light.otf +RobotoSlab-Regular.otf +RobotoSlab-Thin.otf +RobotoSlab[wght].ttf +Roboto[wdth,wght].ttf +Rochester-Regular.ttf +Rock3D-Regular.ttf +RockSalt-Regular.ttf +RocknRollOne-Regular.ttf +Rokkitt-Italic[wght].ttf +RokkittVFBeta.ttf +Rokkitt[wght].ttf +Romanesco-Regular.ttf +RopaSans-Italic.ttf +RopaSans-Regular.ttf +Rosario-Italic[wght].ttf +Rosario[wght].ttf +Rosarivo-Italic.ttf +Rosarivo-Regular.ttf +RougeScript-Regular.ttf +RoundedMplus1c-Black.ttf +RoundedMplus1c-Bold.ttf +RoundedMplus1c-ExtraBold.ttf +RoundedMplus1c-Light.ttf +RoundedMplus1c-Medium.ttf +RoundedMplus1c-Regular.ttf +RoundedMplus1c-Thin.ttf +Rowdies-Bold.ttf +Rowdies-Light.ttf +Rowdies-Regular.ttf +RozhaOne-Regular.ttf +Rubik-Italic[wght].ttf +Rubik80sFade-Regular.ttf +RubikBeastly-Regular.ttf +RubikBubbles-Regular.ttf +RubikBurned-Regular.ttf +RubikDirt-Regular.ttf +RubikDistressed-Regular.ttf +RubikGemstones-Regular.ttf +RubikGlitch-Regular.ttf +RubikIso-Regular.ttf +RubikMarkerHatch-Regular.ttf +RubikMaze-Regular.ttf +RubikMicrobe-Regular.ttf +RubikMonoOne-Regular.ttf +RubikMoonrocks-Regular.ttf +RubikOne-Regular.ttf +RubikPixels-Regular.ttf +RubikPuddles-Regular.ttf +RubikSprayPaint-Regular.ttf +RubikStorm-Regular.ttf +RubikVinyl-Regular.ttf +RubikWetPaint-Regular.ttf +Rubik[wght].ttf +Ruda[wght].ttf +Rufina-Bold.ttf +Rufina-Regular.ttf +RugeBoogie-Regular.ttf +Ruluko-Regular.ttf +RumRaisin-Regular.ttf +RuslanDisplay.ttf +RussoOne-Regular.ttf +Ruthie-Regular.ttf +Rye-Regular.ttf +STIXTwoMath-Regular.ttf +STIXTwoText-Italic[wght].ttf +STIXTwoText[wght].ttf +Sacramento-Regular.ttf +Sahitya-Bold.ttf +Sahitya-Regular.ttf +Sail-Regular.ttf +Saira-Italic[wdth,wght].ttf +SairaCondensed-Black.ttf +SairaCondensed-Bold.ttf +SairaCondensed-ExtraBold.ttf +SairaCondensed-ExtraLight.ttf +SairaCondensed-Light.ttf +SairaCondensed-Medium.ttf +SairaCondensed-Regular.ttf +SairaCondensed-SemiBold.ttf +SairaCondensed-Thin.ttf +SairaExtraCondensed-Black.ttf +SairaExtraCondensed-Bold.ttf +SairaExtraCondensed-ExtraBold.ttf +SairaExtraCondensed-ExtraLight.ttf +SairaExtraCondensed-Light.ttf +SairaExtraCondensed-Medium.ttf +SairaExtraCondensed-Regular.ttf +SairaExtraCondensed-SemiBold.ttf +SairaExtraCondensed-Thin.ttf +SairaSemiCondensed-Black.ttf +SairaSemiCondensed-Bold.ttf +SairaSemiCondensed-ExtraBold.ttf +SairaSemiCondensed-ExtraLight.ttf +SairaSemiCondensed-Light.ttf +SairaSemiCondensed-Medium.ttf +SairaSemiCondensed-Regular.ttf +SairaSemiCondensed-SemiBold.ttf +SairaSemiCondensed-Thin.ttf +SairaStencilOne-Regular.ttf +Saira[wdth,wght].ttf +Salsa-Regular.ttf +Sanchez-Italic.ttf +Sanchez-Regular.ttf +Sancreek-Regular.ttf +Sansation-Bold.ttf +Sansation-BoldItalic.ttf +Sansation-Italic.ttf +Sansation-Light.ttf +Sansation-LightItalic.ttf +Sansation-Regular.ttf +Sansita-Black.ttf +Sansita-BlackItalic.ttf +Sansita-Bold.ttf +Sansita-BoldItalic.ttf +Sansita-ExtraBold.ttf +Sansita-ExtraBoldItalic.ttf +Sansita-Italic.ttf +Sansita-Regular.ttf +SansitaOne-Regular.ttf +SansitaSwashed[wght].ttf +Sarabun-Bold.ttf +Sarabun-BoldItalic.ttf +Sarabun-ExtraBold.ttf +Sarabun-ExtraBoldItalic.ttf +Sarabun-ExtraLight.ttf +Sarabun-ExtraLightItalic.ttf +Sarabun-Italic.ttf +Sarabun-Light.ttf +Sarabun-LightItalic.ttf +Sarabun-Medium.ttf +Sarabun-MediumItalic.ttf +Sarabun-Regular.ttf +Sarabun-SemiBold.ttf +Sarabun-SemiBoldItalic.ttf +Sarabun-Thin.ttf +Sarabun-ThinItalic.ttf +Sarala-Bold.ttf +Sarala-Regular.ttf +Sarina-Regular.ttf +Sarpanch-Black.ttf +Sarpanch-Bold.ttf +Sarpanch-ExtraBold.ttf +Sarpanch-Medium.ttf +Sarpanch-Regular.ttf +Sarpanch-SemiBold.ttf +SassyFrass-Regular.ttf +Satisfy-Regular.ttf +SawarabiGothic-Regular.ttf +SawarabiMincho-Regular.ttf +Scada-Bold.ttf +Scada-BoldItalic.ttf +Scada-Italic.ttf +Scada-Regular.ttf +ScheherazadeNew-Bold.ttf +ScheherazadeNew-Medium.ttf +ScheherazadeNew-Regular.ttf +ScheherazadeNew-SemiBold.ttf +SchibstedGrotesk-Italic[wght].ttf +SchibstedGrotesk[wght].ttf +Schoolbell-Regular.ttf +ScopeOne-Regular.ttf +SeaweedScript-Regular.ttf +SecularOne-Regular.ttf +Sedan-Italic.ttf +Sedan-Regular.ttf +SedanSC-Regular.ttf +SedgwickAve-Regular.ttf +SedgwickAveDisplay-Regular.ttf +Sen-Bold.ttf +Sen-ExtraBold.ttf +Sen-Regular.ttf +SendFlowers-Regular.ttf +SeoulHangang-Bold.ttf +SeoulHangang-ExtraBold.ttf +SeoulHangang-Light.ttf +SeoulHangang-Medium.ttf +SeoulHangangCondensed-Bold.ttf +SeoulHangangCondensed-BoldL.ttf +SeoulHangangCondensed-ExtraBold.ttf +SeoulHangangCondensed-Light.ttf +SeoulHangangCondensed-Medium.ttf +SeoulNamsan-Bold.ttf +SeoulNamsan-ExtraBold.ttf +SeoulNamsan-Light.ttf +SeoulNamsan-Medium.ttf +SeoulNamsanCondensed-Black.ttf +SeoulNamsanCondensed-Bold.ttf +SeoulNamsanCondensed-ExtraBold.ttf +SeoulNamsanCondensed-Light.ttf +SeoulNamsanCondensed-Medium.ttf +SeoulNamsanVertical-Regular.ttf +Sevillana-Regular.ttf +SeymourOne-Regular.ttf +ShadowsIntoLight.ttf +ShadowsIntoLightTwo-Regular.ttf +Shalimar-Regular.ttf +ShantellSans-Italic[BNCE,INFM,SPAC,wght].ttf +ShantellSans[BNCE,INFM,SPAC,wght].ttf +Shanti-Regular.ttf +Share-Bold.ttf +Share-BoldItalic.ttf +Share-Italic.ttf +Share-Regular.ttf +ShareTech-Regular.ttf +ShareTechMono-Regular.ttf +ShipporiAntique-Regular.ttf +ShipporiAntiqueB1-Regular.ttf +ShipporiMincho-Bold.ttf +ShipporiMincho-ExtraBold.ttf +ShipporiMincho-Medium.ttf +ShipporiMincho-Regular.ttf +ShipporiMincho-SemiBold.ttf +ShipporiMinchoB1-Bold.ttf +ShipporiMinchoB1-ExtraBold.ttf +ShipporiMinchoB1-Medium.ttf +ShipporiMinchoB1-Regular.ttf +ShipporiMinchoB1-SemiBold.ttf +Shizuru-Regular.ttf +Shojumaru-Regular.ttf +ShortStack-Regular.ttf +Shrikhand-Regular.ttf +Siemreap.ttf +Sigmar-Regular.ttf +SigmarOne-Regular.ttf +SignikaNegativeSC-Bold.ttf +SignikaNegativeSC-Light.ttf +SignikaNegativeSC-Regular.ttf +SignikaNegativeSC-SemiBold.ttf +SignikaNegative[wght].ttf +SignikaSC[wght].ttf +Signika[wght].ttf +Silkscreen-Bold.ttf +Silkscreen-Regular.ttf +Simonetta-Black.ttf +Simonetta-BlackItalic.ttf +Simonetta-Italic.ttf +Simonetta-Regular.ttf +SingleDay-Regular.ttf +Sintony-Bold.ttf +Sintony-Regular.ttf +SirinStencil-Regular.ttf +Sitara-Bold.ttf +Sitara-BoldItalic.ttf +Sitara-Italic.ttf +Sitara-Regular.ttf +SixCaps.ttf +Skranji-Bold.ttf +Skranji-Regular.ttf +Slabo13px-Regular.ttf +Slabo27px-Regular.ttf +Slackey-Regular.ttf +SlacksideOne-Regular.ttf +Smokum-Regular.ttf +Smooch-Regular.ttf +SmoochSans[wght].ttf +Smythe-Regular.ttf +Sniglet-ExtraBold.ttf +Sniglet-Regular.ttf +Snippet.ttf +SnowburstOne-Regular.ttf +SofadiOne-Regular.ttf +Sofia-Regular.ttf +SofiaSans-Italic[wght].ttf +SofiaSansCondensed-Italic[wght].ttf +SofiaSansCondensed[wght].ttf +SofiaSansExtraCondensed-Italic[wght].ttf +SofiaSansExtraCondensed[wght].ttf +SofiaSansSemiCondensed-Italic[wght].ttf +SofiaSansSemiCondensed[wght].ttf +SofiaSans[wght].ttf +Solitreo-Regular.ttf +Solway-Bold.ttf +Solway-ExtraBold.ttf +Solway-Light.ttf +Solway-Medium.ttf +Solway-Regular.ttf +SometypeMono-Bold.ttf +SometypeMono-BoldItalic.ttf +SometypeMono-Italic.ttf +SometypeMono-Medium.ttf +SometypeMono-MediumItalic.ttf +SometypeMono-Regular.ttf +SongMyung-Regular.ttf +Sono[MONO,wght].ttf +SonsieOne-Regular.ttf +Sora[wght].ttf +SortsMillGoudy-Italic.ttf +SortsMillGoudy-Regular.ttf +Souliyo-Regular.ttf +SourceCodePro-Italic[wght].ttf +SourceCodePro[wght].ttf +SourceSans3-Italic[wght].ttf +SourceSans3[wght].ttf +SourceSansPro-Black.ttf +SourceSansPro-BlackItalic.ttf +SourceSansPro-Bold.ttf +SourceSansPro-BoldItalic.ttf +SourceSansPro-ExtraLight.ttf +SourceSansPro-ExtraLightItalic.ttf +SourceSansPro-Italic.ttf +SourceSansPro-Light.ttf +SourceSansPro-LightItalic.ttf +SourceSansPro-Regular.ttf +SourceSansPro-SemiBold.ttf +SourceSansPro-SemiBoldItalic.ttf +SourceSerif4-Italic[opsz,wght].ttf +SourceSerif4[opsz,wght].ttf +SourceSerifPro-Black.ttf +SourceSerifPro-BlackItalic.ttf +SourceSerifPro-Bold.ttf +SourceSerifPro-BoldItalic.ttf +SourceSerifPro-ExtraLight.ttf +SourceSerifPro-ExtraLightItalic.ttf +SourceSerifPro-Italic.ttf +SourceSerifPro-Light.ttf +SourceSerifPro-LightItalic.ttf +SourceSerifPro-Regular.ttf +SourceSerifPro-SemiBold.ttf +SourceSerifPro-SemiBoldItalic.ttf +SpaceGrotesk[wght].ttf +SpaceMono-Bold.ttf +SpaceMono-BoldItalic.ttf +SpaceMono-Italic.ttf +SpaceMono-Regular.ttf +SpecialElite-Regular.ttf +Spectral-Bold.ttf +Spectral-BoldItalic.ttf +Spectral-ExtraBold.ttf +Spectral-ExtraBoldItalic.ttf +Spectral-ExtraLight.ttf +Spectral-ExtraLightItalic.ttf +Spectral-Italic.ttf +Spectral-Light.ttf +Spectral-LightItalic.ttf +Spectral-Medium.ttf +Spectral-MediumItalic.ttf +Spectral-Regular.ttf +Spectral-SemiBold.ttf +Spectral-SemiBoldItalic.ttf +SpectralSC-Bold.ttf +SpectralSC-BoldItalic.ttf +SpectralSC-ExtraBold.ttf +SpectralSC-ExtraBoldItalic.ttf +SpectralSC-ExtraLight.ttf +SpectralSC-ExtraLightItalic.ttf +SpectralSC-Italic.ttf +SpectralSC-Light.ttf +SpectralSC-LightItalic.ttf +SpectralSC-Medium.ttf +SpectralSC-MediumItalic.ttf +SpectralSC-Regular.ttf +SpectralSC-SemiBold.ttf +SpectralSC-SemiBoldItalic.ttf +SpicyRice-Regular.ttf +Spinnaker-Regular.ttf +Spirax-Regular.ttf +Splash-Regular.ttf +SplineSansMono-Italic[wght].ttf +SplineSansMono[wght].ttf +SplineSans[wght].ttf +SquadaOne-Regular.ttf +SquarePeg-Regular.ttf +SreeKrushnadevaraya-Regular.ttf +Sriracha-Regular.ttf +Srisakdi-Bold.ttf +Srisakdi-Regular.ttf +Staatliches-Regular.ttf +Stalemate-Regular.ttf +StalinistOne-Regular.ttf +StandardSymbolsPS.otf +StandardSymbolsPS.t1 +StardosStencil-Bold.ttf +StardosStencil-Regular.ttf +Stick-Regular.ttf +StickNoBills[wght].ttf +StintUltraCondensed-Regular.ttf +StintUltraExpanded-Regular.ttf +Stoke-Light.ttf +Stoke-Regular.ttf +Strait-Regular.ttf +Strong-Regular.ttf +StyleScript-Regular.ttf +Stylish-Regular.ttf +SueEllenFrancisco-Regular.ttf +SuezOne-Regular.ttf +SulphurPoint-Bold.ttf +SulphurPoint-Light.ttf +SulphurPoint-Regular.ttf +Sumana-Bold.ttf +Sumana-Regular.ttf +Sunflower-Bold.ttf +Sunflower-Light.ttf +Sunflower-Medium.ttf +Sunshiney-Regular.ttf +SupermercadoOne-Regular.ttf +Sura-Bold.ttf +Sura-Regular.ttf +Suranna-Regular.ttf +Suravaram-Regular.ttf +Suwannaphum-Black.ttf +Suwannaphum-Bold.ttf +Suwannaphum-Light.ttf +Suwannaphum-Regular.ttf +Suwannaphum-Thin.ttf +SwankyandMooMoo.ttf +Symbola_hint.ttf +Syncopate-Bold.ttf +Syncopate-Regular.ttf +SyneMono-Regular.ttf +SyneTactile-Regular.ttf +Syne[wght].ttf +TaiHeritagePro-Bold.ttf +TaiHeritagePro-Regular.ttf +Tajawal-Black.ttf +Tajawal-Bold.ttf +Tajawal-ExtraBold.ttf +Tajawal-ExtraLight.ttf +Tajawal-Light.ttf +Tajawal-Medium.ttf +Tajawal-Regular.ttf +Tangerine-Bold.ttf +Tangerine-Regular.ttf +Tapestry-Regular.ttf +Taprom-Regular.ttf +Tauri-Regular.ttf +Taviraj-Black.ttf +Taviraj-BlackItalic.ttf +Taviraj-Bold.ttf +Taviraj-BoldItalic.ttf +Taviraj-ExtraBold.ttf +Taviraj-ExtraBoldItalic.ttf +Taviraj-ExtraLight.ttf +Taviraj-ExtraLightItalic.ttf +Taviraj-Italic.ttf +Taviraj-Light.ttf +Taviraj-LightItalic.ttf +Taviraj-Medium.ttf +Taviraj-MediumItalic.ttf +Taviraj-Regular.ttf +Taviraj-SemiBold.ttf +Taviraj-SemiBoldItalic.ttf +Taviraj-Thin.ttf +Taviraj-ThinItalic.ttf +Teko-Bold.ttf +Teko-Light.ttf +Teko-Medium.ttf +Teko-Regular.ttf +Teko-SemiBold.ttf +Telex-Regular.ttf +TenaliRamakrishna-Regular.ttf +TenorSans-Regular.ttf +TextMeOne-Regular.ttf +Texturina-Italic[opsz,wght].ttf +Texturina[opsz,wght].ttf +Thabit-Bold.ttf +Thabit-BoldOblique.ttf +Thabit-Oblique.ttf +Thabit.ttf +Tharlon-Regular.ttf +Thasadith-Bold.ttf +Thasadith-BoldItalic.ttf +Thasadith-Italic.ttf +Thasadith-Regular.ttf +TheGirlNextDoor.ttf +TheNautigal-Bold.ttf +TheNautigal-Regular.ttf +Tienne-Black.ttf +Tienne-Bold.ttf +Tienne-Regular.ttf +Tillana-Bold.ttf +Tillana-ExtraBold.ttf +Tillana-Medium.ttf +Tillana-Regular.ttf +Tillana-SemiBold.ttf +TiltNeon[XROT,YROT].ttf +TiltPrism[XROT,YROT].ttf +TiltWarp[XROT,YROT].ttf +Timmana-Regular.ttf +Tinos-Bold.ttf +Tinos-BoldItalic.ttf +Tinos-Italic.ttf +Tinos-Regular.ttf +TiroBangla-Italic.ttf +TiroBangla-Regular.ttf +TiroDevanagariHindi-Italic.ttf +TiroDevanagariHindi-Regular.ttf +TiroDevanagariMarathi-Italic.ttf +TiroDevanagariMarathi-Regular.ttf +TiroDevanagariSanskrit-Italic.ttf +TiroDevanagariSanskrit-Regular.ttf +TiroGurmukhi-Italic.ttf +TiroGurmukhi-Regular.ttf +TiroKannada-Italic.ttf +TiroKannada-Regular.ttf +TiroTamil-Italic.ttf +TiroTamil-Regular.ttf +TiroTelugu-Italic.ttf +TiroTelugu-Regular.ttf +TitanOne-Regular.ttf +TitilliumWeb-Black.ttf +TitilliumWeb-Bold.ttf +TitilliumWeb-BoldItalic.ttf +TitilliumWeb-ExtraLight.ttf +TitilliumWeb-ExtraLightItalic.ttf +TitilliumWeb-Italic.ttf +TitilliumWeb-Light.ttf +TitilliumWeb-LightItalic.ttf +TitilliumWeb-Regular.ttf +TitilliumWeb-SemiBold.ttf +TitilliumWeb-SemiBoldItalic.ttf +Tomorrow-Black.ttf +Tomorrow-BlackItalic.ttf +Tomorrow-Bold.ttf +Tomorrow-BoldItalic.ttf +Tomorrow-ExtraBold.ttf +Tomorrow-ExtraBoldItalic.ttf +Tomorrow-ExtraLight.ttf +Tomorrow-ExtraLightItalic.ttf +Tomorrow-Italic.ttf +Tomorrow-Light.ttf +Tomorrow-LightItalic.ttf +Tomorrow-Medium.ttf +Tomorrow-MediumItalic.ttf +Tomorrow-Regular.ttf +Tomorrow-SemiBold.ttf +Tomorrow-SemiBoldItalic.ttf +Tomorrow-Thin.ttf +Tomorrow-ThinItalic.ttf +Tourney-Italic[wdth,wght].ttf +Tourney[wdth,wght].ttf +TradeWinds-Regular.ttf +TrainOne-Regular.ttf +Trirong-Black.ttf +Trirong-BlackItalic.ttf +Trirong-Bold.ttf +Trirong-BoldItalic.ttf +Trirong-ExtraBold.ttf +Trirong-ExtraBoldItalic.ttf +Trirong-ExtraLight.ttf +Trirong-ExtraLightItalic.ttf +Trirong-Italic.ttf +Trirong-Light.ttf +Trirong-LightItalic.ttf +Trirong-Medium.ttf +Trirong-MediumItalic.ttf +Trirong-Regular.ttf +Trirong-SemiBold.ttf +Trirong-SemiBoldItalic.ttf +Trirong-Thin.ttf +Trirong-ThinItalic.ttf +Trispace[wdth,wght].ttf +Trocchi-Regular.ttf +Trochut-Bold.ttf +Trochut-Italic.ttf +Trochut-Regular.ttf +Truculenta[opsz,wdth,wght].ttf +Trykker-Regular.ttf +TsukimiRounded-Bold.ttf +TsukimiRounded-Light.ttf +TsukimiRounded-Medium.ttf +TsukimiRounded-Regular.ttf +TsukimiRounded-SemiBold.ttf +Tuffy-Bold.ttf +Tuffy-BoldItalic.ttf +Tuffy-Italic.ttf +Tuffy-Regular.ttf +TulpenOne-Regular.ttf +TurretRoad-Bold.ttf +TurretRoad-ExtraBold.ttf +TurretRoad-ExtraLight.ttf +TurretRoad-Light.ttf +TurretRoad-Medium.ttf +TurretRoad-Regular.ttf +TwinkleStar-Regular.ttf +URWBookman-Demi.otf +URWBookman-Demi.t1 +URWBookman-DemiItalic.otf +URWBookman-DemiItalic.t1 +URWBookman-Light.otf +URWBookman-Light.t1 +URWBookman-LightItalic.otf +URWBookman-LightItalic.t1 +URWGothic-Book.otf +URWGothic-Book.t1 +URWGothic-BookOblique.otf +URWGothic-BookOblique.t1 +URWGothic-Demi.otf +URWGothic-Demi.t1 +URWGothic-DemiOblique.otf +URWGothic-DemiOblique.t1 +Ubuntu-Bold.ttf +Ubuntu-BoldItalic.ttf +Ubuntu-Italic.ttf +Ubuntu-Light.ttf +Ubuntu-LightItalic.ttf +Ubuntu-Medium.ttf +Ubuntu-MediumItalic.ttf +Ubuntu-Regular.ttf +UbuntuCondensed-Regular.ttf +UbuntuMono-Bold.ttf +UbuntuMono-BoldItalic.ttf +UbuntuMono-Italic.ttf +UbuntuMono-Regular.ttf +Uchen-Regular.ttf +Ultra-Regular.ttf +Unbounded[wght].ttf +UncialAntiqua-Regular.ttf +Underdog-Regular.ttf +UnicaOne-Regular.ttf +UnifrakturCook-Bold.ttf +UnifrakturMaguntia-Book.ttf +Unkempt-Bold.ttf +Unkempt-Regular.ttf +Unlock-Regular.ttf +Unna-Bold.ttf +Unna-BoldItalic.ttf +Unna-Italic.ttf +Unna-Regular.ttf +Updock-Regular.ttf +Urbanist-Italic[wght].ttf +Urbanist[wght].ttf +VT323-Regular.ttf +VampiroOne-Regular.ttf +Varela-Regular.ttf +VarelaRound-Regular.ttf +Varta[wght].ttf +VastShadow-Regular.ttf +Vazirmatn[wght].ttf +VesperLibre-Bold.ttf +VesperLibre-Heavy.ttf +VesperLibre-Medium.ttf +VesperLibre-Regular.ttf +ViaodaLibre-Regular.ttf +Vibes-Regular.ttf +Vibur-Regular.ttf +Vidaloka-Regular.ttf +Viga-Regular.ttf +VinaSans-Regular.ttf +Voces-Regular.ttf +Volkhov-Bold.ttf +Volkhov-BoldItalic.ttf +Volkhov-Italic.ttf +Volkhov-Regular.ttf +Vollkorn-Italic[wght].ttf +VollkornSC-Black.ttf +VollkornSC-Bold.ttf +VollkornSC-Regular.ttf +VollkornSC-SemiBold.ttf +Vollkorn[wght].ttf +Voltaire-Regular.ttf +VujahdayScript-Regular.ttf +WaitingfortheSunrise.ttf +Wallpoet-Regular.ttf +WalterTurncoat-Regular.ttf +Warnes-Regular.ttf +WaterBrush-Regular.ttf +Waterfall-Regular.ttf +Wavefont[ROND,YALN,wght].ttf +Wellfleet-Regular.ttf +WendyOne-Regular.ttf +Whisper-Regular.ttf +WindSong-Medium.ttf +WindSong-Regular.ttf +WireOne-Regular.ttf +WixMadeforDisplay[wght].ttf +WixMadeforText-Bold.ttf +WixMadeforText-BoldItalic.ttf +WixMadeforText-ExtraBold.ttf +WixMadeforText-ExtraBoldItalic.ttf +WixMadeforText-Italic.ttf +WixMadeforText-Italic[wght].ttf +WixMadeforText-Medium.ttf +WixMadeforText-MediumItalic.ttf +WixMadeforText-Regular.ttf +WixMadeforText-SemiBold.ttf +WixMadeforText-SemiBoldItalic.ttf +WixMadeforText[wght].ttf +Wonky[wdth,wght].ttf +WorkSans-Italic[wght].ttf +WorkSans[wght].ttf +XanhMono-Italic.ttf +XanhMono-Regular.ttf +YaldeviColombo-Bold.ttf +YaldeviColombo-ExtraLight.ttf +YaldeviColombo-Light.ttf +YaldeviColombo-Medium.ttf +YaldeviColombo-Regular.ttf +YaldeviColombo-SemiBold.ttf +Yaldevi[wght].ttf +YanoneKaffeesatz[wght].ttf +Yantramanav-Black.ttf +Yantramanav-Bold.ttf +Yantramanav-Light.ttf +Yantramanav-Medium.ttf +Yantramanav-Regular.ttf +Yantramanav-Thin.ttf +YatraOne-Regular.ttf +Yellowtail-Regular.ttf +YeonSung-Regular.ttf +YesevaOne-Regular.ttf +Yesteryear-Regular.ttf +Yinmar-Regular.ttf +Yomogi-Regular.ttf +Yrsa-Italic[wght].ttf +Yrsa[wght].ttf +Ysabeau-Italic[wght].ttf +Ysabeau[wght].ttf +YujiBoku-Regular.ttf +YujiHentaiganaAkari-Regular.ttf +YujiHentaiganaAkebono-Regular.ttf +YujiMai-Regular.ttf +YujiSyuku-Regular.ttf +YuseiMagic-Regular.ttf +Z003-MediumItalic.otf +Z003-MediumItalic.t1 +ZCOOLKuaiLe-Regular.ttf +ZCOOLQingKeHuangYou-Regular.ttf +ZCOOLXiaoWei-Regular.ttf +ZenAntique-Regular.ttf +ZenAntiqueSoft-Regular.ttf +ZenDots-Regular.ttf +ZenKakuGothicAntique-Black.ttf +ZenKakuGothicAntique-Bold.ttf +ZenKakuGothicAntique-Light.ttf +ZenKakuGothicAntique-Medium.ttf +ZenKakuGothicAntique-Regular.ttf +ZenKakuGothicNew-Black.ttf +ZenKakuGothicNew-Bold.ttf +ZenKakuGothicNew-Light.ttf +ZenKakuGothicNew-Medium.ttf +ZenKakuGothicNew-Regular.ttf +ZenKurenaido-Regular.ttf +ZenLoop-Italic.ttf +ZenLoop-Regular.ttf +ZenMaruGothic-Black.ttf +ZenMaruGothic-Bold.ttf +ZenMaruGothic-Light.ttf +ZenMaruGothic-Medium.ttf +ZenMaruGothic-Regular.ttf +ZenOldMincho-Black.ttf +ZenOldMincho-Bold.ttf +ZenOldMincho-Medium.ttf +ZenOldMincho-Regular.ttf +ZenOldMincho-SemiBold.ttf +ZenTokyoZoo-Regular.ttf +Zeyada.ttf +ZhiMangXing-Regular.ttf +ZillaSlab-Bold.ttf +ZillaSlab-BoldItalic.ttf +ZillaSlab-Italic.ttf +ZillaSlab-Light.ttf +ZillaSlab-LightItalic.ttf +ZillaSlab-Medium.ttf +ZillaSlab-MediumItalic.ttf +ZillaSlab-Regular.ttf +ZillaSlab-SemiBold.ttf +ZillaSlab-SemiBoldItalic.ttf +ZillaSlabHighlight-Bold.ttf +ZillaSlabHighlight-Regular.ttf +jsMath-cmbx10.ttf +jsMath-cmex10.ttf +jsMath-cmmi10.ttf +jsMath-cmr10.ttf +jsMath-cmsy10.ttf +jsMath-cmti10.ttf +opens___.ttf diff --git a/dev/chop.raku b/dev/chop.raku new file mode 100644 index 0000000..0311111 --- /dev/null +++ b/dev/chop.raku @@ -0,0 +1,11 @@ +my $ifil = "system-fonts.list"; +my $ofil = "abbrev-test.list"; +my $fh = open $ofil, :w; + +for $ifil.IO.lines -> $line { + my @w = $line.words; + my $w = @w[1]; + $fh.say: $w; +} +$fh.close; + diff --git a/dev/tlist-sort.raku b/dev/tlist-sort.raku index 1d60184..5d5cfc8 100755 --- a/dev/tlist-sort.raku +++ b/dev/tlist-sort.raku @@ -2,20 +2,27 @@ my @w = ; -sub sort-list(@list, :$longest-first) { - return @list.sort({$^b.chars cmp $^a.chars}) if $longest-first; - @list.sort({$^a.chars cmp $^b.chars}) +sub sort-len(@list, :$longest-first) { + return @list.sort({$^b.chars cmp $^a.chars}).eager if $longest-first; + @list.sort({$^a.chars cmp $^b.chars}).eager } +say "1. original list: '{@w.raku}'"; +say "2. a normal sort: '{@w.sort.eager.Array.raku}'"; -say "original list: '{@w.raku}'"; -@w .= sort; -say "after a normal sort: '{@w.raku}'"; +my @w2 = @w.sort; +my @w3 = sort-len(@w2); +say "2. normal sort, then sort by length: '{@w3.eager.raku}'"; -say "reversed sort: '{@w.sort.reverse.raku}'"; -say "sort by length: '{@w.sort({$^a.chars cmp $^b.chars}).raku}'"; -say "sort by length reversed: '{@w.sort({$^a.chars cmp $^b.chars}).reverse.raku}'"; +my @w4 = sort-len(@w); +my @w5 = @w4.sort; +say "4. sort by length: '{@w4.raku}'"; +say "5. sort by length, then normal sort: '{@w5.eager.raku}'"; -say "sort by length: '{sort-list(@w).raku}'"; -say "sort by length, longest first: '{sort-list(@w, :longest-first).raku}'"; +=finish +say "3. reversed sort: '{@w.sort.reverse.eager.raku}'"; +say "4. sort by length: '{sort-len(@w).raku}'"; +say "5. sort by length, then reversed: '{sort-len(@w).reverse.eager.raku}'"; + +say "6. sort by length, longest first: '{sort-len(@w, :longest-first).raku}'"; diff --git a/dist.ini b/dist.ini index 345c1e9..b20bd54 100644 --- a/dist.ini +++ b/dist.ini @@ -1,7 +1,7 @@ name = Abbreviations [ReadmeFromPod] -filename = docs/README.pod +filename = docs/README.rakudoc [PruneFiles] ; match = ^ 'xt/' @@ -9,4 +9,6 @@ filename = docs/README.pod [UploadToZef] [Badges] -provider = github-actions/test +provider = github-actions/linux.yml +provider = github-actions/macos.yml +provider = github-actions/windows.yml diff --git a/docs/README.pod b/docs/README.pod deleted file mode 100644 index b03374e..0000000 --- a/docs/README.pod +++ /dev/null @@ -1,183 +0,0 @@ -=begin pod - -=head1 NAME - -B - Provides abbreviations for an input set of one or more words - -=head1 SYNOPSIS - -=begin code :lang -use Abbreviations; -my $words = 'A ab Abcde'; -# The exported routine: -my %abbrevs = abbreviations $words; -=end code - -There are two shorter routine name abbreviations one can use that are -always exported: - -=begin code :lang - abbrevs - abbrev -=end code - -In the sprit of the module, one can C and -have these additional short forms available: - -=begin code :lang - abbre - abbr - abb - ab - a -=end code - -Each of those is individually available by adding its name as an -adverb, e.g.: - -=begin code :lang -use Abbreviations :abb; -my %abb = abb $words; -=end code - -=head1 DESCRIPTION - -B is a module with one automatically exported subroutine, -C, which takes as input a set of words and returns the -original set with added unique abbreviations for the set. (Note the -input words are also abbreviations in the context of this module.) - -A I satisfies the Raku regex C<$word ~~ /\S+/> which is quite -loose. Using programs can of course further restrict that if need -be. For example, for use with module B words must -satisfy this regex: C<$word ~~ //>. -(B: Words containing other than letters have not been tested -and results are unknown. The author is willing to investigate those -words if any user is so interested and files an issue indicating such.) - - -The input word set can be in one of two forms: -a list or a string containing the words separated by spaces. -Duplicate words will be automatically and quietly eliminated. An empty word -set will cause an exception. - -Note the input word set will not be modified unless the C<:lower-case> -option is used. In that case, all characters will be transformed to lower-case. - -One will normally get the result as a hash, but the return type can -be specified via an C if desired by selecting one of the -C<:out-type> options: -C (AbbrevHash), C (AbbrevList), C (Hash), C (List), or C (String). -For example, - -=begin code -my %abbrevs = abbrevs @words, :out-type(AH); -=end code - -=head3 Output types by C - -=item C (Hash) - -The default I (C) returned will -have input words as keys whose value will be a sorted list of one or more -valid abbreviations (sorted by length, shortest first). - -=item C (AbbrevHash) - -An I (C) is keyed by all of the valid abbreviations for the input -word list and whose values are the word from which that abbreviation is defined. - -=item C (AbbrevList) - -An I (C) is special in that the returned list is the one, shortest -abbreviation for each of the input words in input order. For example, - -=begin code -my @w = ; -my @abb = abbrevs @w, :lower-case, :out-type(AL); -say @abb; # OUTPUT: «[m tu w th f sa su]␤» -=end code - -=item C (List) - -A I (C) contains all of the valid abbreviations for the input -word list, including the words themselves, sorted first by the default Raku sort -and then by length (shortest first). - -=item C (String) - -A I (C) is the string formed by joining the I by a single space between words. - -=head3 Improved abbreviation search - -The abbreviation algorithm has been improved in the following way: -The input word set is -formed into subgroups comprised of each input word. Abbreviations -are created for each word, abbreviations shared by two or words are eliminated, -then all those abbreviations are combined -into one set. The result will be the largest possible set of unique -abbreviations for a given input word set. - -For example, given an input set consisting of the words C, -the default output hash of abbreviations (with the original words as keys) -contains a total of seven abbreviations: - -=begin code - A => ['A'], - ab => ['a', 'ab'], - Abcde => ['Ab', 'Abc', 'Abcd', 'Abcde'], -=end code - -If the C<:lower-case> option is used, we get a slightly different result -since we have fewer unique abbreviations from the lower-cased words. -The new hash has only five abbreviations: - -=begin code -my $words = 'A ab Abcde': -my %abbr = abbrevs $words, :lower-case; -=end code - -The result is - -=begin code - a => ['a'], - ab => ['ab], - abcde => ['abc', 'abcd', 'abcde'], -=end code - -=head2 Other exported symbols - -=head3 C - -=begin code -sub sort-list(@list, :longest-first --> List) is export(:sort) {...} -=end code - -This routine sorts the input list first by the default Raku sort and then -by word length. The order by length is by shortest abbreviation first unless the C<:longest-first> -option is used. This is the routine used for all the lists produced as output -in this module I for the I (C) which keeps the original word set order. - -=head3 C - -The I C is exported automatically as it is required for use of C. - -=head1 AUTHOR - -Tom Browder - -=head1 CREDITS - -=item Leon Timmermans (aka @Leont) for inspiration from his Raku module C. - -=item @thundergnat, the original author of the Raku C algorithm on L. - -=item The Raku community for help with subroutine signatures. - -=head1 COPYRIGHT and LICENSE - -Copyright © 2020-2022 Tom Browder - -This library is free software; you may redistribute or modify it under the Artistic License 2.0. - -=end pod diff --git a/docs/README.pod.save b/docs/README.pod.save deleted file mode 100644 index 75b4d9a..0000000 --- a/docs/README.pod.save +++ /dev/null @@ -1,175 +0,0 @@ -=begin pod - -=head1 NAME - -Abbreviations - Provides abbreviations for an input set of one or more words - -B - -=head1 SYNOPSIS - -=begin code :lang -use Abbreviations; -my $words = 'A ab Abcde'; -# The main exported routine: -my %abbrevs = abbreviations $words; -=end code - -There are two shorter routine name abbreviations one can use that are -always exported: - -=begin code :lang - abbrevs - abbrev -=end code - -In the sprit of the module, one can C and -have these additional short forms available: - -=begin code :lang - abbre - abbr - abb - ab - a -=end code - -Each of those is individually available by adding its name as an -adverb, e.g.: - -=begin code :lang -use Abbreviations :abb; -my %abb = abb $words; -=end code - -=head1 DESCRIPTION - -B is a module with one automatically exported subroutine, -C, which takes as input a set of words and returns the -original set with added unique abbreviations for the set. (Note the -input words are also abbreviations in the context of this module.) - -A I satisfies the Raku regex: C<$word ~~ /\S+/> which is quite -loose. Using programs can of course further restrict that if need -be. For example, for use with module B words must -satisfy this regex: C<$word ~~ //>. - -The input word set can be in one of two forms: -(1) a list (recommended) -or (2) a string containing the words separated by spaces. -Duplicate words will be automatically and -quietly eliminated. - -Note the input word set will not be modified unless the C<:lower-case> -option is used. In that case, all characters will be transformed to lower-case. - -One will normally get the result as a hash, but the return type can -be specified via an C if desired by selecting one of the -C<:output-type> options: -C (AbbrevHash), C (AbbrevList), C (Hash), C (List), or C (String). -For example, - -=begin code -my %abbrevs = abbrevs @words, :output-type(AH); -=end code - -=head3 Output types by enum - -=item C (Hash) - -The default I (C) returned will -have input words as keys whose value will be a sorted list of one or more -valid abbreviations (sorted by length, shortest first). - -=item C (AbbrevHash) - -An I (C) is keyed by all of the valid abbreviations for the input -word list and whose values are the word from which that abbreviation is defined. - -=item C (AbbrevList) - -An I (C) is special in that the returned list is the one, shortest -abbreviation for each of the input words in input order. For example, - -=begin code -my @w = ; -my @abb = abbrevs @w, :lower-case, :output-type(AL); -say @abb; # OUTPUT: m tu w th f sa su -=end code - -=item C (List) - -A I (C) contains all of the valid abbreviations for the input -word list, including the words themselves, sorted first be the default Raku sort -and then by length (shortest first). - -=item C (String) - -A I (C) is the string formed by joining the B by a single space. - -One other point about the new abbreviation process: the input word set is -first formed into subgroups based on the the first -character of each word. Then the subgroups have -their abbreviation sets formed, then all those sets are combined -into one set. The result will be a larger number of available -abbeviations in many cases than were available under the original API. - -For example, given an input set consisting of the words C, -the default output hash of abbreviations (with the original words as keys) is - -=begin code - A => ['A'], - ab => ['a', 'ab'], - Abcde => ['Ab', 'Abc', 'Abcd', 'Abcde'], -=end code - -If the C<:lower-case> option is used we get a surprisingly different result. - -=begin code -my $words = 'A ab Abcde': -my %abbr = abbrevs $words, :lower-case; -=end code - -The result is - -=begin code - a => ['a'], - ab => ['ab], - abcde => ['abc', 'abcd', 'abcde'], -=end code - -Notice the input word B now has only one abbreviation and B has only three. - -=head2 Exported symbols - -=head3 C - -=begin code -sub sort-list(@list, :longest-first --> List) is export(:sort) -{...} -=end code - -The routine sorts the input list first by the default Raku sort and then -by word length. The order by length is by shortest first unless the C<:longest-first> -option is used. - -=head1 AUTHOR - -Tom Browder - -=head1 CREDITS - -=item Leon Timmermans (aka @Leont) for inspiration from his Raku module C. - -=item @thundergnat, the original author of the Raku C algorithm on L. - -=item The Raku community for help with subroutine signatures. - -=head1 COPYRIGHT and LICENSE - -Copyright © 2020-2021 Tom Browder - -This library is free software; you may redistribute or modify it under the Artistic License 2.0. - -=end pod - diff --git a/docs/README.rakudoc b/docs/README.rakudoc new file mode 100644 index 0000000..7f3a8fe --- /dev/null +++ b/docs/README.rakudoc @@ -0,0 +1,269 @@ +=begin pod + +=head1 NAME + +Abbreviations - Provides abbreviations for an input set of one or more words + +=head1 SYNOPSIS + +=begin code :lang +use Abbreviations; +my $words = 'A ab Abcde'; +# The main exported routine: +my %abbrevs = abbreviations $words; +say %abbrevs.gist; +# OUTPUT: «{A => A, Abcde => Ab, ab => a}␤» +=end code + +=head1 DESCRIPTION + +B is a module with one automatically exported +subroutine, C, which takes as input a set of words and +returns the original set with added unique abbreviations for the set. +(Note the input words are also abbreviations in the context of this +module.) + + +Its signature: + +=begin code +sub abbreviations($word-set, #= Str, List, or Hash (Set) + :$out-type = HA, #= the default, HashAbbrev + :$lower-case, #= convert the word st to lowercase + :$min-length, #= minimum abbreviation length + ) is export {...} +=end code + +A I satisfies the Raku regex C<$word ~~ /\S+/> which is quite +loose. Using programs can of course further restrict that if need +be. For example, for use with module B words must +satisfy this regex: C<$word ~~ //>. + +A natural consequence of generating all the abbreviations for a +set of one word is this: the output provides a regex alternation +which matches any partial length of the target word. For example, +given a target word 'Args': + +=begin code +use Abbreviations; +use Test; +my $target = "Args"; +my $regex = abbrev $target; # OUTPUT: «"A|Ar|Arg|Args"␤»; +my $res = False; +my @w = $regex.split('|'); +for @w { + when /<$regex>/ { + $res = True + } + default { + $res = False + } +} +is $res, True; # OUTPUT: «ok 1␤» +=end code + +As shown in the example above, limiting the input set to one word +results in the output of a regex alternation string. The rest +of this description applies to sets of two or more words. +The input word set can be in one of three forms: (1) a list +(recommended), (2) a string containing the words separated by spaces, +or (3) as a hash (or set) with the words being keys of the hash (set +members). Duplicate words will be automatically and quietly +eliminated. + +Note the input word set will not be modified unless the C<:lower-case> +option is used. In that case, all characters will be transformed to +lower-case and any new duplicate words deleted. + +If the user wishes, he or she can restrict the minimum length of +the generated abbreviations by using the C<:$min-length> parameter. + +One will normally get the result as a hash with the input words as +keys with their shortest abbreviation as values (return type HA), but +the return type can be specified via C if desired by +selecting one of the C<:$output-type> options. For example: + +=begin code +my %abbrevs = abbrevs @words, :output-type(AH); +=end code + +There are two shorter alias names for C one can +use that are always exported: + +=begin code :lang + abbrevs + abbrev +=end code + +In the sprit of the module, one can C and +have these additional shorter alias names available: + +=begin code :lang + abbre + abbr + abb + ab + a +=end code + +Each of those is individually available by adding its name as an +adverb, for example: + +=begin code :lang +use Abbreviations :abb; +my %abb = abb $words; +=end code + +=head3 C + +=begin code +enum Out-type is export ; +=end code + +The I C is exported automatically as it is required +for using C. It has the following types: + +=item C (HashAbbrev) + +The default I (C) returned will have input words as +keys whose value will be the shortest valid abbreviation. + +=item C (Hash) + +A variant of C, the I (C) returned will have input words +as keys whose value will be a sorted list of its valid abbreviations +(sorted by length, shortest first, then by C order). + +=item C (AbbrevHash) + +An I (C) is keyed by all of the valid abbreviations +for the input word list and whose values are the word from which that +abbreviation is defined. + +=item C (AbbrevList) + +An I (C) is special in that the returned list is the +one, shortest abbreviation for each of the input words in input +order. For example, + +=begin code +my @w = ; +my @abb = abbrevs @w, :output-type(AL); +say @abb; # OUTPUT: «M Tu W Th F Sa Su␤» +=end code + +Note that a hash (or set) input type will not reliably provide this +output as expected since the keys are not stored in order. Instead, +the ouput will be based on a list of the hash's keys. In effect, entering +C<%out = abbreviations %in> is the same as: + +=begin code +my @inputlist = %in.keys.sort({.chars, .Str}'; +my %out = abbreviations @inputlist; +=end code + +=item C (List) + +A I (C) contains all of the valid abbreviations for the input +word list, including the words themselves, sorted by length, then character +order. + +=item C (String) + +A I (C) is the string formed by joining the I by a +single space between words. + +=head3 Improved abbreviation search + +The abbreviation algorithm has been improved from the +original (as found on L) in the following way: +The input word set is formed into subgroups comprised of each input +word. Abbreviations are created for each word, abbreviations shared by +two or words are eliminated, then all those abbreviations are combined +into one set. The result will be the largest possible set of unique +abbreviations for a given input word set. + +For example, given an input set consisting of the words C, +the default output hash of abbreviations (with the original words as +keys) contains a total of seven abbreviations: + +=begin code + A => ['A'], + ab => ['a', 'ab'], + Abcde => ['Ab', 'Abc', 'Abcd', 'Abcde'], +=end code + +If the C<:lower-case> option is used, we get a slightly different +result since we have fewer unique abbreviations from the lower-cased +words. The new hash has only five abbreviations: + +=begin code +my $words = 'A ab Abcde': +my %abbr = abbrevs $words, :lower-case; +=end code + +The result is + +=begin code + a => ['a'], + ab => ['ab], + abcde => ['abc', 'abcd', 'abcde'], +=end code + +Notice the input word B now has only one abbreviation and B +has only three. + +=head2 Other exported symbols + +=head3 C + +=begin code +sub sort-list(@list, :$type = SL, :$reverse --> List) is export(:sort) +{...} +=end code + +By default, this routine sorts all lists by word length, then by Str +order. The order by length is by the shortest abbreviation first unless +the C<:$reverse> option is used. This is the routine used for all the +output types produced by this module I the +I (C) which keeps the original word set order. + +The routine's output can be modified for other uses by entering the +C<:$type> parameter to choose another of the s. + +=head3 C + +=begin code +enum Sort-type is export(:sort) < SL LS SS LL N>; +=end code + +The Cs are: + +=item SL - order by Str, then order by Length +=item LS - order by Length, then order by Str +=item SS - Str order only +=item LL - Length order only +=item N - Numerical order only (falls back to SS if any words are not numbers) + +=head1 AUTHOR + +Tom Browder + +=head1 CREDITS + +=item Leon Timmermans (aka @Leont) for inspiration from his Raku +module C. + +=item @thundergnat, the original author of the Raku C +algorithm on L. + +=item The Raku community for help with subroutine signatures. + +=head1 COPYRIGHT and LICENSE + +Copyright © 2020-2023 Tom Browder + +This library is free software; you may redistribute or modify it under the Artistic License 2.0. + +=end pod diff --git a/lib/Abbreviations.rakumod b/lib/Abbreviations.rakumod index 7e37330..0b478e6 100644 --- a/lib/Abbreviations.rakumod +++ b/lib/Abbreviations.rakumod @@ -1,6 +1,10 @@ unit module Abbreviations; -enum Out-type is export ; +# String, List, AbbrevHash, Hash, HashAbbrev +enum Out-type is export < S L AH AL H HA >; + +# StrLength, LengthStr, Str, Length, Numeric (or Str) +enum Sort-type is export < SL LS SS LL N >; # define "aliases" for convenience our &abbrevs is export = &abbreviations; @@ -11,86 +15,19 @@ our &abb is export(:abb) = &abbreviations; our &ab is export(:ab) = &abbreviations; our &a is export(:a) = &abbreviations; -sub get-abbrevs(@abbrev-words, :$debug --> Hash) is export { - # @ow - A list of original, unique words (downcased if desired) - my @ow = @abbrev-words; - my %ow; - %ow{$_} = 1 for @ow; - - # %abbrevs - The final solution should be in the hash with its - # keys being the list of valid abbreviations - # and its value the using $word. - my %abbrevs; # keys are abbrevs, value list of using words - - for @ow -> $word { - my $n = $word.chars; - die "FATAL: zero word length" if not $n; - # IMPORTANT: at this stage of the collection, the $word is NOT an abbreviation - # but it will be added later. - for 1..$n { - my $abbrev = $word.substr(0, $_); - next if %ow{$abbrev}:exists; - if %abbrevs{$abbrev}:exists { - %abbrevs{$abbrev}.push: $word; - } - else { - %abbrevs{$abbrev} = []; - %abbrevs{$abbrev}.push: $word; - } - } - } - - # delete all abbrevs not having exactly one word associated with it - for %abbrevs.kv -> $abbrev, $wordlist { - my $nw = $wordlist.elems; - if $nw != 1 { - %abbrevs{$abbrev}:delete; - } - } - - if $debug { - note "DEBUG: dumping %abbrev hash:"; - note %abbrevs.raku; - } - - # TODO remove this annoying extra step by changing the caller or this sub!!! - # the hash needs to be converted to the default H (Hash) type because of the needs of the caller - my %m; - for %abbrevs.kv -> $a, $w { - if %m{$w}:exists { - %m{$w}.push: $a; - } - else { - %m{$w} = []; - %m{$w}.push: $a; - } - } - # now add the word as an abbreviation for itself - for %ow.keys -> $w { - %m{$w}.push: $w; - } - - # ensure the lists are properly sorted - for %m.kv -> $w, $abbrev-list { - my @w = sort-list @($abbrev-list); - %m{$w} = @w; - } - - %m; - -} # sub get-newabbrevs - +#| The calling program sub abbreviations($word-set, - Out-type :$out-type = H, + :$out-type is copy = HA, #= the default :$lower-case, + :$min-length, #= minimum abbreviation length :$debug, ) is export { # Given a set of words, determine the shortest unique abbreviation # for each word. my @abbrev-words; - my @input-order; # holds the original order before any lower-casing - my @input-order-lower-case; + my @input-order; #= holds the original order but modified to remove + #= dups and any lower-casing # Determine the input type and generate the input word lists accordingly if $word-set ~~ Str { @@ -98,9 +35,13 @@ sub abbreviations($word-set, @input-order = @abbrev-words; } elsif $word-set ~~ List { - @abbrev-words = @($word-set); + @abbrev-words = $word-set.words; @input-order = @abbrev-words; } + elsif $word-set ~~ Hash { + @abbrev-words = sort-list $word-set.keys; + @input-order = @abbrev-words; # check docs, also add a test to check it + } else { die "FATAL: Cannot handle word set format '{$word-set.^name}'"; } @@ -111,30 +52,45 @@ sub abbreviations($word-set, # Remove any dups @abbrev-words .= unique; - @input-order = @abbrev-words; + @input-order = @abbrev-words; + + my $nwords = @input-order.elems; + $out-type = L if $nwords == 1; - if $lower-case { + if $lower-case and $nwords > 1 { $_ .= lc for @abbrev-words; @abbrev-words .= unique; - @input-order-lower-case = @abbrev-words; + @input-order = @abbrev-words; } # Use the output hash to assemble other output formats - my %m = get-abbrevs @abbrev-words, :$debug; + my $abbrev-out-type; + with $out-type { + when $_ ~~ HA { $abbrev-out-type = HA } + when $_ ~~ AL { $abbrev-out-type = HA } + default { $abbrev-out-type = H } + } + + my %m = get-abbrevs @abbrev-words, :$abbrev-out-type, :$min-length, :$debug; + + # Default for ONE word is to return it as a single word with all + # its abbreviations interleaved with pipes. # The hash output is %m and ready to go (keys are words) - return %m if $out-type ~~ H; # 'Hash' + return %m if $out-type ~~ HA|H; # 'Hash' - # The list and string output formats will have all words (keys) and abbreviations - # sorted by default then length (shortest first) + # The list and string output formats will have all words + # (keys) and abbreviations sorted by string order then length. my @ow; for %m.kv -> $k, $abbrev-list { - my @list = @($abbrev-list); - @ow.push: |@list; + my @list = $abbrev-list.words; + @ow.push($_) for @list; }; @ow = sort-list @ow; - return @ow if $out-type ~~ L; # 'List' + return @ow.join('|') if $nwords == 1; + + return @ow if $out-type ~~ L; # 'List' return @ow.join(' ') if $out-type ~~ S; # 'String'; if $out-type ~~ AH { @@ -143,8 +99,13 @@ sub abbreviations($word-set, # each word and its value is that word. my %ah; for %m.kv -> $word, $abbrev-list { - for @($abbrev-list) -> $abbrev { - note "ERROR: Unexpected dup abbrev '$abbrev' for word '$word'" if %ah{$abbrev}:exists; + for $abbrev-list.words -> $abbrev { + if %ah{$abbrev}:exists { + note qq:to/HERE/; + ERROR: Unexpected dup abbrev '$abbrev' for word + '$word'" + HERE + } %ah{$abbrev} = $word; } } @@ -154,16 +115,16 @@ sub abbreviations($word-set, } if $out-type ~~ AL { - #=== Output hash converted to AbbrevList: + #=== Output hash (HA) converted to AbbrevList: # The AbbrevList is the list of the min abbreviations for # each word in the original input order. my @al; - my @in = @abbrev-words; + my @in = @input-order; for @in -> $w { # for each word, add its min abbrev to the list - my $m = @(%m{$w})[0]; - @al.push: $m; + @al.push: %m{$w}; } + note "DEBUG: out-type(AL) in words: {@in}" if $debug; note "DEBUG: abbrevs: {@al}" if $debug; return @al; @@ -173,10 +134,114 @@ sub abbreviations($word-set, } # end sub abbreviations -sub sort-list(@list is copy, :$longest-first) is export(:auto, :sort) { - # always sort by standard sort first - @list .= sort; - return @list.sort({$^b.chars cmp $^a.chars}) if $longest-first; - # sort by shortest word first - @list.sort({$^a.chars cmp $^b.chars}); -} +#| This sub is called by sub abbreviations +sub get-abbrevs(@abbrev-words, :$abbrev-out-type!, :$min-length, :$debug --> Hash) { + # @ow - A list of original, unique words (downcased if desired) + my @ow = @abbrev-words; + my %ow; # a hash to hold the words to be abbreviated + %ow{$_} = 1 for @ow; + + # %abbrevs - The final solution should be in the hash with its + # keys being the list of valid abbreviations + # and its value the using $word. + my %abbrevs; # keys are abbrevs, value list of using words + + for @ow -> $word { + my $n = $word.chars; + die "FATAL: zero word length" if not $n; + # IMPORTANT: at this stage of the collection, the $word is NOT an abbreviation + # but it will be added later. + for 1..$n { + my $abbrev = $word.substr(0, $_); + next if %ow{$abbrev}:exists; + if %abbrevs{$abbrev}:exists { + %abbrevs{$abbrev}.push: $word; + } + else { + %abbrevs{$abbrev} = []; + %abbrevs{$abbrev}.push: $word; + } + } + } + + # Delete all abbrevs not having exactly one word associated with it + for %abbrevs.kv -> $abbrev, $wordlist { + my $nw = $wordlist.elems; + if $nw != 1 { + %abbrevs{$abbrev}:delete; + } + } + + if $debug { + note "DEBUG: dumping %abbrev hash:"; + note %abbrevs.raku; + } + + # The hash will later be converted to the default HA (Hash) type unles + # the caller wants another type. In that case, the H type will + # be returned and processed further if need be. + my %m; # will hold the hash of words and their abbrevs + for %abbrevs.kv -> $a, $w { + if $min-length.defined { + next if $a.chars < $min-length; + } + + if %m{$w}:exists { + %m{$w}.push: $a; + } + else { + %m{$w} = []; + %m{$w}.push: $a; + } + } + # Add the word as an abbreviation for itself + for %ow.keys -> $w { + %m{$w}.push: $w; + } + + # Ensure the lists are properly sorted + for %m.kv -> $w, $abbrev-list { + my @w = sort-list $abbrev-list.words; + if $abbrev-out-type ~~ HA { + %m{$w} = @w.head; + } + else { + %m{$w} = @w; + } + } + + %m + +} # sub get-abbrevs + +# enum Sort-type is export < SL LS SS LL N >; # StrLength, LengthStr, Str, Length, Number +sub sort-list(@List, :$type = LS, :$reverse) is export(:auto, :sort) { + my @list = @List; + if $type ~~ SL { + @list .= sort({.Str, .chars}); + } + elsif $type ~~ LS { + @list .= sort({.chars, .Str}); + } + elsif $type ~~ LL { + @list .= sort({.chars}); + } + elsif $type ~~ SS { + @list .= sort({.Str}); + } + elsif $type ~~ N { + my $is-numeric = True; + for @list { + $is-numeric = False unless $_.Numeric; + } + if $is-numeric { + @list .= sort({ $^a <=> $^b }); + } + else { + @list .= sort({.Str}); + } + } + + @list .= reverse if $reverse; + @list +} # end sub sort-list diff --git a/t/03-abbreviations.t b/t/03-abbreviations.t deleted file mode 100644 index 4aa75e6..0000000 --- a/t/03-abbreviations.t +++ /dev/null @@ -1,138 +0,0 @@ -use Test; - -use Abbreviations :ALL; - -my $debug = 0; - -##### subroutines ##### -sub sort-len {$^a.chars cmp $^b.chars} - -# good input test data -my @in = ; -my $in = @in.join(' '); - -# EXPECTED -# lower-case option: min abbrev 3 -my %outL = [ - # keyed by the input words, lower-cased - a => ['a'], - ab => ['ab'], - abcde => ['abc', 'abcd', 'abcde'], -]; -my %outL-AH = [ - # keyed by the valid abbreviations for the input words, lower-cased - a => 'a', - ab => 'ab', - abc => 'abcde', - abcd => 'abcde', - abcde => 'abcde', -]; -my @outL-AL = ; -my @outL = @outL-AL; - @outL .= append(); - @outL .= sort; - @outL .= sort(&sort-len); -my $outL = @outL.join(' '); - -# default case-sensitive -my %out = [ - # keyed by the input words - A => ['A'], - Abcde => ['Ab', 'Abc', 'Abcd', 'Abcde'], - ab => ['a', 'ab'], -]; -my %out-AH = [ - # keyed by the valid abbreviations for the input words - A => 'A', - Ab => 'Abcde', - Abc => 'Abcde', - Abcd => 'Abcde', - Abcde => 'Abcde', - a => 'ab', - ab => 'ab', -]; -my @out-AL = ; -my @out = @out-AL; - @out .= append(); - @out .= sort; - @out .= sort(&sort-len); -my $out = @out.join(' '); - -plan 34; - -# basic in/out -# 24 tests - -# default, keep existing case -is-deeply abbreviations($in, :$debug), %out, "string in, hash out"; -is-deeply abbreviations($in, :out-type(AH), :$debug), %out-AH, "string in, AbbrevHash out"; -is-deeply abbreviations($in, :out-type(AL), :$debug), @out-AL, "string in, AbbrevList out"; -is-deeply abbreviations($in, :out-type(L), :$debug), @out, "string in, List out"; -is abbreviations($in, :out-type(S), :$debug), $out, "string in, Str out"; - -is-deeply abbreviations(@in), %out, "list in, hash out"; -is-deeply abbreviations(@in, :out-type(AH), :$debug), %out-AH, "list in, AbbrevHash out"; -is-deeply abbreviations(@in, :out-type(AL), :$debug), @out-AL, "list in, AbbrevList out"; -is-deeply abbreviations(@in, :out-type(L), :$debug), @out, "list in, List out"; -is abbreviations(@in, :out-type(S), :$debug), $out, "list in, Str out"; - -# test :lower-case option -is-deeply abbreviations($in, :lower-case, :$debug), %outL, "string in, hash out, lower-case"; -is-deeply abbreviations($in, :lower-case, :out-type(AH), :$debug), %outL-AH, "string in, AbbrevHash out, lower-case"; -is-deeply abbreviations($in, :lower-case, :out-type(AL), :$debug), @outL-AL, "string in, AbbrevList out, lower-case"; -is-deeply abbreviations($in, :lower-case, :out-type(L), :$debug), @outL, "string in, List out, lower-case"; -is abbreviations($in, :lower-case, :out-type(S), :$debug), $outL, "string in, Str out, lower-case"; - -is-deeply abbreviations(@in, :lower-case, :$debug), %outL, "list in, hash out, lower-case"; -is-deeply abbreviations(@in, :lower-case, :out-type(AH), :$debug), %outL-AH, "list in, AbbrevHash out, lower-case"; -is-deeply abbreviations(@in, :lower-case, :out-type(AL), :$debug), @outL-AL, "list in, AbbrevList out, lower-case"; -is-deeply abbreviations(@in, :lower-case, :out-type(L), :$debug), @outL, "list in, List out, lower-case"; -is abbreviations(@in, :lower-case, :out-type(S), :$debug), $outL, "list in, Str out, lower-case"; - -# checking aliases -# 7 tests - -is-deeply abbrevs(@in, :$debug), %out, "alias abbrevs"; -is-deeply abbrev(@in, :$debug), %out, "alias abbrev"; -is-deeply abbre(@in, :$debug), %out, "alias abbre"; -is-deeply abbr(@in, :$debug), %out, "alias abbr"; -is-deeply abb(@in, :$debug), %out, "alias abb"; -is-deeply ab(@in, :$debug), %out, "alias ab"; -is-deeply a(@in, :$debug), %out, "alias a"; - -# faulty and punctuation test data -# 5 tests - -# leading or trailing space -my $bad-words1 = ' a ab abcde '; -my $bad-words1-out = 'a ab abc abcd abcde'; -is abbreviations($bad-words1, :out-type(S), :$debug), $bad-words1-out, "string in with leading and trailing spaces"; - -# dup word -my $bad-words2 = 'a a ab abcde'; -my $bad-words2-out = 'a ab abc abcd abcde'; -is abbreviations($bad-words2, :out-type(S), :$debug), $bad-words2-out, "eliminate dup words"; - -# no word causes an exception -my $bad-words3a = ''; -my $bad-words3b = ' '; -dies-ok { - my $res = abbreviations($bad-words3a, :out-type(S), :$debug); -}, "FATAL: no words in ('')"; -dies-ok { - my $res = abbreviations($bad-words3b, :out-type(S), :$debug); -}, "FATAL: no words in (' ')"; - -# apostrophes, commas, periods, etc. -my @bad-words4 = ; -my $bad-words4-out = q{! ' * - ; ? a a, ab abc abcd abcde}; -is abbreviations(@bad-words4, :out-type(S), :$debug), $bad-words4-out, "words and punctuation"; - -# other tests -my @w = ; -my @dow = abbrevs @w, :lower-case, :out-type(AL), :$debug; -my $dow = abbrevs @w, :lower-case, :out-type(AL), :$debug; -my @d = ; -is-deeply @dow, @d, "AL test on days of the week"; -is-deeply $dow, @d, "AL test on days of the week"; - diff --git a/t/01-load.t b/t/1-load.t similarity index 100% rename from t/01-load.t rename to t/1-load.t diff --git a/t/2-abbreviations.t b/t/2-abbreviations.t new file mode 100644 index 0000000..50637e2 --- /dev/null +++ b/t/2-abbreviations.t @@ -0,0 +1,124 @@ +use Test; + +use Abbreviations :ALL; + +my $debug = 0; + +plan 42; + +# good input test data +my @in = ; # arbitrary input order +my $in = @in.join(' '); # same as a string +my %in = 'A' => 0, 'ab'=> 1, 'Abcde'=> 2; # same, as a hash + +# EXPECTED OUTPUT +# lower-case option +my %outL-HA = [ + # keyed by the input words, lower-cased, default out-type HA + a => 'a', + ab => 'ab', + abcde => 'abc', +]; +my %outL-H = [ + # keyed by the input words, lower-cased, out-type H + a => ['a'], + ab => ['ab'], + abcde => ['abc', 'abcd', 'abcde'], +]; +my %outL-AH = [ + # keyed by the valid abbreviations for the input words, lower-cased + a => 'a', + ab => 'ab', + abc => 'abcde', + abcd => 'abcde', + abcde => 'abcde', +]; +#my @in = ; +my @outL-AL = ; +my @outL = @outL-AL; + @outL .= push('abcd'); + @outL .= push('abcde'); + @outL = sort-list @outL; +my $outL = @outL.join(' '); + +# default case-sensitive +my %out-HA = [ + # keyed by the input words and, optionally, $out-type HA + A => 'A', + Abcde => 'Ab', + ab => 'a', +]; +my %out-H = [ + # keyed by the input words and $out-type H + # (this was the original default) + A => ['A'], + Abcde => ['Ab', 'Abc', 'Abcd', 'Abcde'], + ab => ['a', 'ab'], +]; +my %out-AH = [ + # keyed by the valid abbreviations for the input words + A => 'A', + Ab => 'Abcde', + Abc => 'Abcde', + Abcd => 'Abcde', + Abcde => 'Abcde', + a => 'ab', + ab => 'ab', +]; +#my @in = ; +#my @outL-AL = ; +my @out-AL = ; +my @out = @out-AL; + @out .= append: ; + @out = sort-list @out; +my $out = @out.join(' '); + +# default, keep existing case +is-deeply abbreviations($in, :$debug), %out-HA, "string in, default hash HA out"; +is-deeply abbreviations($in, :out-type(HA), :$debug), %out-HA, "string in, hash HA (default)"; +is-deeply abbreviations($in, :out-type(H), :$debug), %out-H, "string in, hash H (old default)"; +is-deeply abbreviations($in, :out-type(AH), :$debug), %out-AH, "string in, AbbrevHash out"; +is-deeply abbreviations($in, :out-type(AL), :$debug), @out-AL, "string in, AbbrevList out"; +is-deeply abbreviations($in, :out-type(L), :$debug), @out, "string in, List out"; +is abbreviations($in, :out-type(S), :$debug), $out, "string in, Str out"; + +is-deeply abbreviations(@in, :$debug), %out-HA, "list in, default hash HA out"; +is-deeply abbreviations(@in, :out-type(HA), :$debug), %out-HA, "list in, default hash HA out"; +is-deeply abbreviations(@in, :out-type(H), :$debug), %out-H, "list in, hash H out"; +is-deeply abbreviations(@in, :out-type(AH), :$debug), %out-AH, "list in, AbbrevHash out"; +is-deeply abbreviations(@in, :out-type(AL), :$debug), @out-AL, "list in, AbbrevList out"; +is-deeply abbreviations(@in, :out-type(L), :$debug), @out, "list in, List out"; +is abbreviations(@in, :out-type(S), :$debug), $out, "list in, Str out"; + +is-deeply abbreviations(%in, :$debug), %out-HA, "hash in, default hash HA out"; +is-deeply abbreviations(%in, :out-type(HA), :$debug), %out-HA, "hash in, default hash HA out"; +is-deeply abbreviations(%in, :out-type(H), :$debug), %out-H, "hash in, hash H out"; +is-deeply abbreviations(%in, :out-type(AH), :$debug), %out-AH, "hash in, AbbrevHash out"; +is-deeply abbreviations(%in, :out-type(AL), :$debug), @out-AL, "hash in, AbbrevList out"; +is-deeply abbreviations(%in, :out-type(L), :$debug), @out, "hash in, List out"; +is abbreviations(%in, :out-type(S), :$debug), $out, "hash in, Str out"; + +# test :lower-case option +is-deeply abbreviations($in, :lower-case, :$debug), %outL-HA, "string in, default hash HA out, lower-case"; +is-deeply abbreviations($in, :lower-case, :out-type(HA), :$debug), %outL-HA, "string in, hash out, lower-case"; +is-deeply abbreviations($in, :lower-case, :out-type(H), :$debug), %outL-H, "string in, hash out, lower-case"; +is-deeply abbreviations($in, :lower-case, :out-type(AH), :$debug), %outL-AH, "string in, AbbrevHash out, lower-case"; +is-deeply abbreviations($in, :lower-case, :out-type(AL), :$debug), @outL-AL, "string in, AbbrevList out, lower-case"; +is-deeply abbreviations($in, :lower-case, :out-type(L), :$debug), @outL, "string in, List out, lower-case"; +is abbreviations($in, :lower-case, :out-type(S), :$debug), $outL, "string in, Str out, lower-case"; + +is-deeply abbreviations(@in, :lower-case, :$debug), %outL-HA, "list in, default hash HA out, lower-case"; +is-deeply abbreviations(@in, :lower-case, :out-type(HA), :$debug), %outL-HA, "list in, hash out, lower-case"; +is-deeply abbreviations(@in, :lower-case, :out-type(H), :$debug), %outL-H, "list in, hash out, lower-case"; +is-deeply abbreviations(@in, :lower-case, :out-type(AH), :$debug), %outL-AH, "list in, AbbrevHash out, lower-case"; +is-deeply abbreviations(@in, :lower-case, :out-type(AL), :$debug), @outL-AL, "list in, AbbrevList out, lower-case"; +is-deeply abbreviations(@in, :lower-case, :out-type(L), :$debug), @outL, "list in, List out, lower-case"; +is abbreviations(@in, :lower-case, :out-type(S), :$debug), $outL, "list in, Str out, lower-case"; + +is-deeply abbreviations(%in, :lower-case, :$debug), %outL-HA, "hash in, default hash HA out, lower-case"; +is-deeply abbreviations(%in, :lower-case, :out-type(HA), :$debug), %outL-HA, "hash in, hash out, lower-case"; +is-deeply abbreviations(%in, :lower-case, :out-type(H), :$debug), %outL-H, "hash in, hash out, lower-case"; +is-deeply abbreviations(%in, :lower-case, :out-type(AH), :$debug), %outL-AH, "hash in, AbbrevHash out, lower-case"; +is-deeply abbreviations(%in, :lower-case, :out-type(AL), :$debug), @outL-AL, "hash in, AbbrevList out, lower-case"; +is-deeply abbreviations(%in, :lower-case, :out-type(L), :$debug), @outL, "hash in, List out, lower-case"; +is abbreviations(%in, :lower-case, :out-type(S), :$debug), $outL, "hash in, Str out, lower-case"; diff --git a/t/3-unusual-inputs.t b/t/3-unusual-inputs.t new file mode 100644 index 0000000..7b3dcd9 --- /dev/null +++ b/t/3-unusual-inputs.t @@ -0,0 +1,67 @@ +use Test; + +use Abbreviations :ALL; + +my $debug = 0; + +plan 15; + +# good input test data +my @in = ; # arbitrary input order +my %out = [ + # keyed by the input words and, optionally, $out-type HA + A => 'A', + Abcde => 'Ab', + ab => 'a', +]; + +# checking aliases +# 7 tests + +is-deeply abbrevs(@in, :$debug), %out, "alias abbrevs"; +is-deeply abbrev(@in, :$debug), %out, "alias abbrev"; +is-deeply abbre(@in, :$debug), %out, "alias abbre"; +is-deeply abbr(@in, :$debug), %out, "alias abbr"; +is-deeply abb(@in, :$debug), %out, "alias abb"; +is-deeply ab(@in, :$debug), %out, "alias ab"; +is-deeply a(@in, :$debug), %out, "alias a"; + +# faulty and punctuation test data +# 5 tests + +# leading or trailing space +my $bad-words1 = ' a ab abcde '; +my $bad-words1-out = 'a ab abc abcd abcde'; +is abbreviations($bad-words1, :out-type(S), :$debug), $bad-words1-out, "string in with leading and trailing spaces"; + +# dup word +my $bad-words2 = 'a a ab abcde'; +my $bad-words2-out = 'a ab abc abcd abcde'; +is abbreviations($bad-words2, :out-type(S), :$debug), $bad-words2-out, "eliminate dup words"; + +# no word causes an exception +my $bad-words3a = ''; +my $bad-words3b = ' '; +dies-ok { + my $res = abbreviations($bad-words3a, :out-type(S), :$debug); +}, "FATAL: no words in ('')"; +dies-ok { + my $res = abbreviations($bad-words3b, :out-type(S), :$debug); +}, "FATAL: no words in (' ')"; + +# apostrophes, commas, periods, etc. +my @bad-words4 = ; +my $bad-words4-out = q{! ' * - ; ? a a, ab abc abcd abcde}; +is abbreviations(@bad-words4, :out-type(S), :$debug), $bad-words4-out, "words and punctuation"; + +# other tests +my @w = ; +my @d = ; +#my @dow = abbrevs @w, :lower-case, :out-type(AL), :$debug; +my @dow = abbreviations @w, :lower-case, :out-type(AL), :$debug; +is @dow, @d, "AL test on days of the week"; + +my $dow = abbrevs @w, :lower-case, :out-type(AL), :$debug; +is @dow, @d, "AL test on days of the week"; + +is-deeply $dow, @d, "AL test on days of the week"; diff --git a/t/04-issue-1.t b/t/4-issue-1.t similarity index 92% rename from t/04-issue-1.t rename to t/4-issue-1.t index 082724a..9d6ba3b 100644 --- a/t/04-issue-1.t +++ b/t/4-issue-1.t @@ -3,7 +3,7 @@ use Test; use Abbreviations :ALL; ##### subroutines ##### -sub sort-len {$^a.chars cmp $^b.chars} +sub sort-len {$^a.chars cmp $^b.chars} # now exported by the module as sort-list # from issue #1 my $debug = 0; diff --git a/t/5-README-EXAMPLE.t b/t/5-README-EXAMPLE.t new file mode 100644 index 0000000..79b5aec --- /dev/null +++ b/t/5-README-EXAMPLE.t @@ -0,0 +1,13 @@ +use Test; + +my $debug = 0; + +plan 3; + +use Abbreviations :ALL; +my $words = 'A ab Abcde'; +# The main exported routine: +my %abbrevs = abbreviations $words; +is %abbrevs, 'A'; +is %abbrevs, 'a'; +is %abbrevs, 'Ab'; diff --git a/t/6-sorting.t b/t/6-sorting.t new file mode 100644 index 0000000..3be4f37 --- /dev/null +++ b/t/6-sorting.t @@ -0,0 +1,32 @@ +use Test; + +use Abbreviations :ALL; + +my $debug = 0; + +# non-numeric input test data +my @in = ; +# expected +my @outLS = ; +my @outLS-rev = ; +my @outSL = ; +my @outSL-rev = ; + +is sort-list(@in), @outLS, "default, LS"; +is sort-list(@in, :reverse), @outLS-rev, "default, LS, reversed"; + +is sort-list(@in, :type(LS)), @outLS, "type LS"; +is sort-list(@in, :type(LS), :reverse), @outLS-rev, "type LS, reversed"; + +is sort-list(@in, :type(SL)), @outSL, "type SL"; +is sort-list(@in, :type(SL), :reverse), @outSL-rev, "type SL, reversed"; + +# numeric sorting +@in = 1, 3, 2; +is sort-list(@in, :type(N)), (1,2,3), "numerical sort with numbers"; +@in = 1, 'a', 2; +is sort-list(@in, :type(N)), (1,2,'a'), "numerical sort with non-numbers"; + +done-testing; + + diff --git a/t/7-min-length.t b/t/7-min-length.t new file mode 100644 index 0000000..1c83fa0 --- /dev/null +++ b/t/7-min-length.t @@ -0,0 +1,21 @@ +use Test; + +use Abbreviations :ALL; + +my $debug = 0; + +plan 3; + +# min-length tests +my @w = ; +my @d = ; +my @d2 = ; +my @d3 = ; + +my @dow = abbreviations @w, :lower-case, :out-type(AL), :$debug; +my @dow2 = abbreviations @w, :lower-case, :min-length(2), :out-type(AL), :$debug; +my @dow3 = abbreviations @w, :lower-case, :min-length(3), :out-type(AL), :$debug; + +is @dow, @d, "AL test on days of the week"; +is @dow2, @d2, "AL test on days of the week, min-length 2"; +is @dow3, @d3, "AL test on days of the week, min-length 3"; diff --git a/t/8-set-inputs.t b/t/8-set-inputs.t new file mode 100644 index 0000000..7eca4b7 --- /dev/null +++ b/t/8-set-inputs.t @@ -0,0 +1,18 @@ +use Test; + +use Abbreviations :ALL; + +my $debug = 0; + +plan 1; + +# good input test data +my %in = set ; # set input order +my %out = [ + # keyed by the input words and, optionally, $out-type HA + A => 'A', + Abcde => 'Ab', + ab => 'a', +]; + +is-deeply abbreviations(%in, :$debug), %out, "input set of words"; diff --git a/t/9-junction.t b/t/9-junction.t new file mode 100644 index 0000000..cb0b3b0 --- /dev/null +++ b/t/9-junction.t @@ -0,0 +1,84 @@ +use Test; + +use Abbreviations :ALL; + +use lib <./t/Utils>; +use Subs; + +my $debug = 0; + +plan 7; + +{ + # Example from the README + my $target = "Args"; + my $regex = abbrev $target; # OUTPUT: «"A|Ar|Arg|Args"␤»; + my $res = False; + my @w = $regex.split('|'); + for @w { + when /<$regex>/ { + $res = True + } + default { + $res = False + } + } + is $res, True; # OUTPUT: «ok 1␤» +} + +# Single word +my $target = "Args"; +my $junction = abbrevs $target; +is $junction, "A|Ar|Arg|Args", "Single word => /regex junction/"; +my $regex = /{$junction}/; + +my @args = $junction.split("|"); +my $nfails; +my $nargs = @args.elems; + +# subtest 1 +subtest { + plan 1; + $nfails = test-regex(:$regex, :@args); + is $nfails, 0, "expect 0 fails, got $nfails"; +}, "subtest 1"; + +# subtest 2 +subtest { + plan 1; + $target = "Args"; + $regex = /(A|Ar|Arg|Args)/; + $nfails = test-regex(:$regex, :@args); + is $nfails, 0, "expect 0 fails, got $nfails"; +}, "subtest 2"; + +# subtest 3 +subtest { + plan 1; + $target = "Args"; + @args = $junction.split("|"); + $regex = /^(A|Ar|Arg|Args)/; + $nfails = test-regex(:$regex, :@args); + is $nfails, 0, "Expected 0 fails, got $nfails"; +}, "subtest 3"; + +# subtest 4 +$target = "NArgs"; +$junction = abbrev $target; +@args = $junction.split('|'); +$nargs = @args.elems; +subtest { + plan 1; + $regex = /^(A|Ar|Arg|Args)/; + $nfails = test-regex(:$regex, :@args); + is $nfails, $nargs, "Expected $nargs fails, got $nfails"; +}, "subtest 4"; + +# subtest 5 +subtest { + plan 1; + $regex = /(A|Ar|Arg|Args)/; + $nfails = test-regex(:$regex, :@args); + is $nfails, 1, "Expected 1 fail, got $nfails"; +}, "subtest 5"; + diff --git a/t/Utils/Subs.rakumod b/t/Utils/Subs.rakumod new file mode 100644 index 0000000..7e8bff6 --- /dev/null +++ b/t/Utils/Subs.rakumod @@ -0,0 +1,26 @@ +unit module Subs; + +use Abbreviations :ALL; + +# We create a $regex from the abbreviation of the arg . +# We split that to form the @args input list. + +sub test-regex( + :@args!, + :$regex!, + :$debug, + --> UInt +) is export { + my $nfails = 0; + my $res; + for @args { + when $_ ~~ $regex { + $res = True + } + default { + $res = False; + ++$nfails + } + } + $nfails +}