This is Nowar Sans, font packs for World of Warcraft and WoW Classic that support all client languages. Nowar Sans is based on Noto Sans and Source Han Sans.
Make Love, Not Warcraft.
要有爱,不要魔兽争霸。
要愛,不要魔獸。
Mirrors: Gitee (Release Repo)
Nowar Sans is shipped in 7 weights and 5 regional variants, with several features. More weights (any number from 200 to 900!) can be built form source.
- 300: Light
- 350: SemiLight
- 400: Regular
- 450: Book
- 500: Medium
- 600: SemiBold
- 700: Bold
Bliz and Neut are “standard variants” with regional Chinese character orthographies.
European and 한국어 | 简体中文 | 繁體中文 | Note | |
---|---|---|---|---|
Bliz | Mainland China (UI) | Mainland China | Taiwan | Acts like WoW’s default fallback setting. |
Neut | Classical (UI) | Mainland China | Taiwan | Prefers classical orthography on fallback. |
CL is the “classical variant” with classical Chinese character orthography (aka Kāngxī Dictionary forms).
European and 한국어 | 中文 | |
---|---|---|
CL | Classical (UI) | Classical |
PSimp and PSimpChat are special variants for 繁體中文 that remap traditional Chinese character to simplified ones.
Common Fonts | 繁體中文 Text, Combat and Tooltip Fonts | 繁體中文 Chat Fonts | European, 简体中文 and 한국어 | |
---|---|---|---|---|
PSimp | Mainland China (UI, Remapped) | Mainland China (Remapped) | Mainland China | N/A |
PSimpChat | Mainland China (UI, Remapped) | Mainland China (Remapped) | Mainland China (Remapped) | N/A |
- European: English, Español (AL), Português, Deutsch, Español (EU), Français, Italiano, and Русский.
- UI: Ambiguous punctations are treated as Western; CJK puctations are half-width.
- Common fonts:
FRIZQT__
andARIALN
, which are hard-coded in some addons.
Tag | Name | Description |
---|---|---|
OSF | Oldstyle | Oldstyle (non-lining), proportional figure. |
RP | Roleplaying | 丶 (U+4E36) is mapped to the same glyph as · (U+00B7, MIDDLE DOT). |
SC | Smallcaps | Small capitals for Latin. |
Pre-built feature variants: Bliz,RP
, Neut,OSF
, Neut,SC
.
CyR (Cyrillic Romanisation), Pinyin and Romaja are “cross-language variants” for PTR realms that transliterate or transcript Cyrillic, Chinese and Hanguel characters to Latin letters.
Variant | Description | Example |
---|---|---|
CyR | Replace Cyrillic letters with underlined smapp-capital Latin letters, using the ISO 9:1995 (or GOST 2002) system | R̲ᴜ̲s̲s̲ᴋ̲ɪ̲ᴊ̲ (Русский) |
Pinyin | Append small-capital Hànyǔ Pīnyīn to Chinese characters | 汉ʜᴀ̀ɴ字ᴢɪ̀ |
Romaja | Append small-capital Romaja to Hanguel characters | 한ʜᴀɴ글ɢᴜᴇʟ |
Due to the technical limitation, the CyR is implemented as feature variant and is applied to all languages (we can not distinguish cyrillic chat font from latin chat font – they are both ARAILN
) while Pinyin and Romaja are implemented as regional variant and are applied to non-Chinese or non-Korean languages (applying to native language will heavily break UI layout).
Variant | Implementation | Applied to |
---|---|---|
CyR | Feature variant | All languages |
Pinyin | Regional variant (based on Neut) | All except 简体中文 and 繁體中文 |
Romaja | Regional variant (based on Neut) | All except 한국어 |
As a result, the XLang variants can be confusing and thus are distributed under a dedicated tag with an -xlang
suffix.
Distribution | CyR | Pinyin | Romaja |
---|---|---|---|
Pinyin,Romaja,CyR | ✓ | ✓ | ✓ |
Pinyin,CyR | ✓ | ✓ | ✗ |
Romaja,CyR | ✓ | ✗ | ✓ |
Neut,CyR | ✓ | ✗ | ✗ |
Pinyin,Romaja | ✗ | ✓ | ✓ |
Pinyin | ✗ | ✓ | ✗ |
Romaja | ✗ | ✗ | ✓ |
Note:
- Choose 64-bit version. 32-bit version will lead to out-of-memory issue.
Prepare submodules:
git submodule update --init --recursive
Prepare Node.js dependency:
npm install
Run configure.py
to generate Makefile:
python configure.py
Put Source Han Sans variable OTF files to source/shs/
.
Then make a specific variant:
make <region>,<features>-<weight> -j<threads>
Note: Features must be sorted alphabetically. (OSF
, RP
, SC
).
e.g.
make CN,OSF,RP-400 -j4
The output is out/NowarSans-<region>,<features>-<weight>-<version>.7z
.
Any number from 200 to 900 (both included) is valid weight value for Nowar Sans. Numbers from 100 (included) to 200 (excluded) are also available, but CJK part will be same weight as 200.
To build a font pack with customised weight value, modify configure.py
:
class Config:
# put your weight here
fontPackWeight = [ <your_weight> ]
Then, run python configure.py
to generate Makefile
. The new weight (with optional feature) can be built by:
make <region>,<features>-<weight> -j<threads>
To build exactly what you need, modify configure.py
:
class Config:
# put your variant here
fontPackRegion = [ <your_region> ]
# define the variant here.
regionalVariant = { ... }
For example, the “CNmulti” multi-orthography variant,
European | 简体中文 | 繁體中文 | 한국어 | |
---|---|---|---|---|
CNmulti | Mainland China (UI) | Mainland China | Taiwan | S. Korea (UI) |
class Config:
fontPackRegion = [ "CNmulti" ]
regionalVariant = {
"CNmulti": {
"base": "CN",
"enUS": True,
"ruRU": True,
"zhCN": "CN",
"zhTW": "TW",
"koKR": "KR",
}
}
Then, run python configure.py
to generate Makefile
. The new regional variant (with optional feature) can be built by:
make <region>,<features>-<weight> -j<threads>
e.g.
make CNmulti-400 -j4
make CNmulti,OSF-400 -j4
Latin, Greek and Cyrillic characters are built from Noto Source, the source “code” for Noto Sans by Google.
CJK Ideographs, Kana and Hangul are from Source Han Sans by Adobe.
The traditional Chinese to simplified Chinese conversion table is from Open Chinese Convert project.
First of all, prepare the repo.
git clone --recursive https://github.com/googlefonts/noto-source.git
cd noto-source
./build setup
Then activate the build environment.
source env/bin/activate
To build the font, call the fontmake
command.
fontmake -g src/NotoSans-MM.glyphs -o variable-cff2
The output is in variable_otf/
.