Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 60 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
name: Build PlemolSC Fonts

on:
push:
branches: [ main, master ]
pull_request:
branches: [ main, master ]
workflow_dispatch:

jobs:
build:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.x'

- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y fontforge python3-fontforge unzip curl
pip install fonttools

- name: Download source fonts
run: |
chmod +x download_fonts.sh
./download_fonts.sh

- name: Build fonts
run: |
build_font() {
local opts="$1"
local prefix="$2"
echo "Building with opts: $opts"
# fontforge python is available when using `python3-fontforge`
fontforge -lang=py -script fontforge_script.py --do-not-delete-build-dir $opts
python3 fonttools_script.py "$prefix"
}

# Parallel build takes too much memory? Let's build a few sequentially.
build_font "" "-"
build_font "--35" "35-"
build_font "--console" "Console-"
build_font "--console --35" "35Console-"
build_font "--hidden-zenkaku-space" "HS-"
build_font "--hidden-zenkaku-space --35" "35HS-"
build_font "--hidden-zenkaku-space --console" "ConsoleHS-"
build_font "--hidden-zenkaku-space --console --35" "35ConsoleHS-"
build_font "--console --nerd-font" "ConsoleNF-"
build_font "--console --35 --nerd-font" "35ConsoleNF-"

- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: PlemolSC-Fonts
path: build/
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,8 @@ work/
error.log
build/
release_files/
source/IBM-Plex-Mono/*.ttf
source/IBM-Plex-Sans-SC/unhinted/*.ttf
source/hack/*.ttf
source/nerd-fonts/*.ttf
source/*.ttf
6 changes: 3 additions & 3 deletions LICENSE
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@

- Source fonts are licensed under SIL OPEN FONT LICENSE Version 1.1.
For more information, see "LICENSE_<FontName>" file contained in the "source" directory.
- "PlemolJP" are licensed under SIL OPEN FONT LICENSE Version 1.1.
- "PlemolSC" are licensed under SIL OPEN FONT LICENSE Version 1.1.
- Other source code, such as generating scripts, will use the MIT license.

## "PlemolJP" licensing
## "PlemolSC" licensing

Copyright (c) 2021, Yuko OTAWARA. with Reserved Font Name "PlemolJP"
Copyright (c) 2021, Yuko OTAWARA. with Reserved Font Name "PlemolSC"

This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
Expand Down
24 changes: 12 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,29 +1,29 @@
# PlemolJP (プレモル ジェイピー)
# PlemolSC (プレモル エスシー)

***Ple***x ***Mo***no ***L***anguage ***JP***
***Ple***x ***Mo***no ***L***anguage ***SC***

IBM Plex Mono と IBM Plex Sans JP を合成した日本語プログラミングフォント PlemolJP (プレモル ジェイピー)
IBM Plex Mono と IBM Plex Sans SC を合成した日本語プログラミングフォント PlemolSC (プレモル エスシー)

**ダウンロードはこちら ➡ [Releases](https://github.com/yuru7/PlemolJP/releases/latest)**
**ダウンロードはこちら ➡ [Releases](https://github.com/yuru7/PlemolSC/releases/latest)**

> 💡 [Homebrew (Mac) でのインストール方法](doc/install_via_homebrew.md)

![image](https://github.com/yuru7/PlemolJP/raw/images/beer.jpg)
![image](https://github.com/yuru7/PlemolSC/raw/images/beer.jpg)

PlemolJP では合成元の [IBM Plex Mono](https://github.com/IBM/plex) シリーズと同様に、ノーマル・イタリックの両スタイルに対応しました。また、各スタイルごとに8種のウェイト (Thin~Bold) をご用意しています。
PlemolSC では合成元の [IBM Plex Mono](https://github.com/IBM/plex) シリーズと同様に、ノーマル・イタリックの両スタイルに対応しました。また、各スタイルごとに8種のウェイト (Thin~Bold) をご用意しています。

さらに日本語環境でのプログラミングでつまずきがちな全角スペースの誤入力に気づけるよう、全角スペースを可視化する修正を加えています。

> 💡 全角スペースの可視化が不要な場合は、リリースの Assets より `PlemolJP_HS_vx.x.x.zip` の名前形式になっている zip ファイルを選択してください。(HS: Hidden Space)
> 💡 全角スペースの可視化が不要な場合は、リリースの Assets より `PlemolSC_HS_vx.x.x.zip` の名前形式になっている zip ファイルを選択してください。(HS: Hidden Space)

> 💡 Powerline 記号等が含まれる Nerd Fonts 対応版は、リリースの Assets より `PlemolJP_NF_vx.x.x.zip` の名前形式になっている zip ファイルを選択してください。(NF: Nerd Fonts)
> 💡 Powerline 記号等が含まれる Nerd Fonts 対応版は、リリースの Assets より `PlemolSC_NF_vx.x.x.zip` の名前形式になっている zip ファイルを選択してください。(NF: Nerd Fonts)

|**フォント ファミリー**|**説明**|
|:------------:|:---|
|**PlemolJP**|文字幅比率「半角1:全角2」の通常版の PlemolJP。主にASCIIコードの英数字記号に IBM Plex Mono の字体を使い、その他の日本語文字や記号類に IBM Plex Sans JP を使っている。|
|**PlemolJP Console**|IBM Plex Mono の字体を除外せずに全て適用したフォントファミリー。矢印記号などの多くの記号が半角で表示されるため、コンソールでの利用や記号類は可能な限り半角で表示したい人にオススメ。|
|**PlemolJP35**|通常版の PlemolJP の文字幅比率を「半角3:全角5」にしたフォントファミリー。英数字が通常版の PlemolJP よりも大きく表示される。日本語が少ない文書やコードの場合にはこちらの方が読みやすいと感じるかもしれない。|
|**PlemolJP35 Console**|PlemolJP Console の文字幅比率を 半角3:全角5 にしたフォントファミリー|
|**PlemolSC**|文字幅比率「半角1:全角2」の通常版の PlemolSC。主にASCIIコードの英数字記号に IBM Plex Mono の字体を使い、その他の日本語文字や記号類に IBM Plex Sans SC を使っている。|
|**PlemolSC Console**|IBM Plex Mono の字体を除外せずに全て適用したフォントファミリー。矢印記号などの多くの記号が半角で表示されるため、コンソールでの利用や記号類は可能な限り半角で表示したい人にオススメ。|
|**PlemolSC35**|通常版の PlemolSC の文字幅比率を「半角3:全角5」にしたフォントファミリー。英数字が通常版の PlemolSC よりも大きく表示される。日本語が少ない文書やコードの場合にはこちらの方が読みやすいと感じるかもしれない。|
|**PlemolSC35 Console**|PlemolSC Console の文字幅比率を 半角3:全角5 にしたフォントファミリー|

> 💡 その他、公開中のプログラミングフォント
> - 日本語文字に源柔ゴシック、英数字部分に Hack を使った [**白源 (はくげん/HackGen)**](https://github.com/yuru7/HackGen)
Expand Down
4 changes: 2 additions & 2 deletions build.ini
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[DEFAULT]
VERSION = v3.0.0
FONT_NAME = PlemolJP
JP_FONT = IBM-Plex-Sans-JP/unhinted/IBMPlexSansJP-{style}.ttf
FONT_NAME = PlemolSC
JP_FONT = IBM-Plex-Sans-SC/unhinted/IBMPlexSansSC-{style}.ttf
ENG_FONT = IBM-Plex-Mono/IBMPlexMono-{style}.ttf
HACK_FONT = hack/Hack-{style}.ttf
SOURCE_FONTS_DIR = source
Expand Down
37 changes: 37 additions & 0 deletions download_fonts.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
#!/bin/bash
set -e

mkdir -p source/IBM-Plex-Mono
mkdir -p source/IBM-Plex-Sans-SC/unhinted
mkdir -p source/hack
mkdir -p source/nerd-fonts

echo "Downloading IBM Plex Mono..."
curl -sL -o /tmp/ibm-plex-mono.zip "https://github.com/IBM/plex/releases/download/%40ibm/plex-mono%402.5.0/ibm-plex-mono.zip"
unzip -q -j -o /tmp/ibm-plex-mono.zip "ibm-plex-mono/fonts/split/ttf/*" -d source/IBM-Plex-Mono || true
# Fallback if structure is different
if [ ! -f "source/IBM-Plex-Mono/IBMPlexMono-Regular.ttf" ]; then
unzip -q -j -o /tmp/ibm-plex-mono.zip "*.ttf" -d source/IBM-Plex-Mono || true
fi

echo "Downloading IBM Plex Sans SC..."
curl -sL -o /tmp/ibm-plex-sans-sc.zip "https://github.com/IBM/plex/releases/download/%40ibm/plex-sans-sc%401.1.0/ibm-plex-sans-sc.zip"
unzip -q -j -o /tmp/ibm-plex-sans-sc.zip "ibm-plex-sans-sc/fonts/split/ttf/unhinted/*" -d source/IBM-Plex-Sans-SC/unhinted || true
if [ ! -f "source/IBM-Plex-Sans-SC/unhinted/IBMPlexSansSC-Regular.ttf" ]; then
unzip -q -j -o /tmp/ibm-plex-sans-sc.zip "*.ttf" -d source/IBM-Plex-Sans-SC/unhinted || true
fi

echo "Downloading Hack fonts..."
curl -sL -o /tmp/hack.zip "https://github.com/source-foundry/Hack/releases/download/v3.003/Hack-v3.003-ttf.zip"
unzip -q -j -o /tmp/hack.zip "ttf/Hack-Regular.ttf" "ttf/Hack-Bold.ttf" -d source/hack || true

echo "Downloading Nerd Fonts..."
# SymbolsNerdFont-Regular.ttf
curl -sL -o /tmp/NerdFontsSymbolsOnly.zip "https://github.com/ryanoasis/nerd-fonts/releases/download/v3.2.1/NerdFontsSymbolsOnly.zip"
unzip -q -j -o /tmp/NerdFontsSymbolsOnly.zip "SymbolsNerdFont-Regular.ttf" -d source/nerd-fonts || true

# BlexMonoNerdFont-Regular.ttf
curl -sL -o /tmp/IBMPlexMono.zip "https://github.com/ryanoasis/nerd-fonts/releases/download/v3.2.1/IBMPlexMono.zip"
unzip -q -j -o /tmp/IBMPlexMono.zip "BlexMonoNerdFont-Regular.ttf" -d source || true

echo "Done!"
8 changes: 4 additions & 4 deletions fontforge_script.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@
[Nerd Fonts]
Copyright (c) 2014, Ryan L McIntyre https://ryanlmcintyre.com

[PlemolJP]
[PlemolSC]
Copyright (c) 2021, Yuko Otawara
""" # noqa: E501

Expand Down Expand Up @@ -396,7 +396,7 @@ def adjust_some_glyph(jp_font, eng_font, style="Regular"):
glyph.transform(psMat.translate((full_width - glyph.width) / 2, -150))
glyph.width = full_width

# Cent Sign, Pound Sign, Yen Sign は半角記号に IBM Plex Sans JP を使用
# Cent Sign, Pound Sign, Yen Sign は半角記号に IBM Plex Sans SC を使用
jp_font.selection.select(("unicode", None), 0x00A2)
jp_font.selection.select(("unicode", "more"), 0x00A3)
jp_font.selection.select(("unicode", "more"), 0x00A5)
Expand Down Expand Up @@ -446,7 +446,7 @@ def delete_duplicate_glyphs(jp_font, eng_font):
eng_font.selection.none()
jp_font.selection.none()

# IBM Plex Sans JP グリフを使用
# IBM Plex Sans SC グリフを使用
eng_font[0x00A2].clear() # Cent Sign
eng_font[0x00A3].clear() # Pound Sign
eng_font[0x00A5].clear() # Yen Sign
Expand Down Expand Up @@ -593,7 +593,7 @@ def delete_not_console_glyphs(eng_font):
eng_font.selection.select(("more", "unicode"), 0x203E)
eng_font.selection.select(("more", "unicode", "ranges"), 0x2113, 0x2122)
# 矢印
# TODO: IBM Plex Sans JP v1.002 へバージョンアップすると矢印が拡張される見込みだが、当該バージョンには一部グリフ欠けがあるためさらに上のバージョンが出てきた際に取り込む
# TODO: IBM Plex Sans SC v1.002 へバージョンアップすると矢印が拡張される見込みだが、当該バージョンには一部グリフ欠けがあるためさらに上のバージョンが出てきた際に取り込む
eng_font.selection.select(("more", "unicode", "ranges"), 0x2190, 0x2193)
eng_font.selection.select(("more", "unicode", "ranges"), 0x21C4, 0x21C6)
eng_font.selection.select(("more", "unicode"), 0x21D2)
Expand Down
2 changes: 1 addition & 1 deletion fonttools_script.py
Original file line number Diff line number Diff line change
Expand Up @@ -271,7 +271,7 @@ def fix_name_table(xml: ET):
# タグ形式: <namerecord nameID="0" platformID="1" platEncID="0" langID="0x0" unicode="True">COPYLIGHT</namerecord>
parent = xml.find("name")
for element in parent.findall("namerecord[@nameID='0']"):
if "PlemolJP" not in element.text:
if "PlemolSC" not in element.text:
parent.remove(element)


Expand Down
14 changes: 7 additions & 7 deletions make.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,9 @@ $option_and_output_folder | Foreach-Object -ThrottleLimit 4 -Parallel {
}

$move_file_src_dest = @(
@("PlemolJP*NF*-*.ttf", "PlemolJP_NF_$version", "NF"),
@("PlemolJP*HS*-*.ttf", "PlemolJP_HS_$version", "HS"),
@("PlemolJP*-*.ttf", "PlemolJP_$version", "")
@("PlemolSC*NF*-*.ttf", "PlemolSC_NF_$version", "NF"),
@("PlemolSC*HS*-*.ttf", "PlemolSC_HS_$version", "HS"),
@("PlemolSC*-*.ttf", "PlemolSC_$version", "")
)

$timestamp = Get-Date -Format "yyyyMMddHHmmss"
Expand All @@ -49,10 +49,10 @@ $move_file_src_dest | Foreach-Object {
$variant = "_$($_[2])"
}
@(
@("*35Console*.ttf", "PlemolJP35Console$($variant)"),
@("*Console*.ttf", "PlemolJPConsole$($variant)"),
@("*35*.ttf", "PlemolJP35$($variant)"),
@("*.ttf", "PlemolJP$($variant)")
@("*35Console*.ttf", "PlemolSC35Console$($variant)"),
@("*Console*.ttf", "PlemolSCConsole$($variant)"),
@("*35*.ttf", "PlemolSC35$($variant)"),
@("*.ttf", "PlemolSC$($variant)")
) | Foreach-Object {
$individual_folder_path = "$folder_path\$($_[1])"
# ファイル件数が0件の場合はフォルダを作成しない
Expand Down
4 changes: 2 additions & 2 deletions old_script/copyright.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@ BASE_DIR="$(cd $(dirname $0); pwd)"

PREFIX="$1"

FONT_PATTERN=${PREFIX}'PlemolJP*.ttf'
FONT_PATTERN=${PREFIX}'PlemolSC*.ttf'

COPYRIGHT='[IBM Plex]
Copyright © 2017 IBM Corp.

[Nerd Fonts]
Copyright (c) 2014, Ryan L McIntyre (https://ryanlmcintyre.com).

[PlemolJP]
[PlemolSC]
Copyright (c) 2021, Yuko Otawara'

for P in ${BASE_DIR}/${FONT_PATTERN}
Expand Down
42 changes: 21 additions & 21 deletions old_script/make.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,33 +5,33 @@ plemoljp_version="1.7.1"
BASE_DIR=$(cd $(dirname $0); pwd)

function mvBuild() {
mkdir -p "${BASE_DIR}/build/PlemolJP"
mkdir -p "${BASE_DIR}/build/PlemolJPConsole"
mkdir -p "${BASE_DIR}/build/PlemolJP35"
mkdir -p "${BASE_DIR}/build/PlemolJP35Console"
mv -f "${BASE_DIR}/"PlemolJP35Console*.ttf "${BASE_DIR}/build/PlemolJP35Console/"
mv -f "${BASE_DIR}/"PlemolJP35*.ttf "${BASE_DIR}/build/PlemolJP35/"
mv -f "${BASE_DIR}/"PlemolJPConsole*.ttf "${BASE_DIR}/build/PlemolJPConsole/"
mv -f "${BASE_DIR}/"PlemolJP*.ttf "${BASE_DIR}/build/PlemolJP/"
mkdir -p "${BASE_DIR}/build/PlemolSC"
mkdir -p "${BASE_DIR}/build/PlemolSCConsole"
mkdir -p "${BASE_DIR}/build/PlemolSC35"
mkdir -p "${BASE_DIR}/build/PlemolSC35Console"
mv -f "${BASE_DIR}/"PlemolSC35Console*.ttf "${BASE_DIR}/build/PlemolSC35Console/"
mv -f "${BASE_DIR}/"PlemolSC35*.ttf "${BASE_DIR}/build/PlemolSC35/"
mv -f "${BASE_DIR}/"PlemolSCConsole*.ttf "${BASE_DIR}/build/PlemolSCConsole/"
mv -f "${BASE_DIR}/"PlemolSC*.ttf "${BASE_DIR}/build/PlemolSC/"
}

function mvBuildHS() {
mkdir -p "${BASE_DIR}/build/PlemolJP_HS"
mkdir -p "${BASE_DIR}/build/PlemolJPConsole_HS"
mkdir -p "${BASE_DIR}/build/PlemolJP35_HS"
mkdir -p "${BASE_DIR}/build/PlemolJP35Console_HS"
mv -f "${BASE_DIR}/"PlemolJP35Console*.ttf "${BASE_DIR}/build/PlemolJP35Console_HS/"
mv -f "${BASE_DIR}/"PlemolJP35*.ttf "${BASE_DIR}/build/PlemolJP35_HS/"
mv -f "${BASE_DIR}/"PlemolJPConsole*.ttf "${BASE_DIR}/build/PlemolJPConsole_HS/"
mv -f "${BASE_DIR}/"PlemolJP*.ttf "${BASE_DIR}/build/PlemolJP_HS/"
mkdir -p "${BASE_DIR}/build/PlemolSC_HS"
mkdir -p "${BASE_DIR}/build/PlemolSCConsole_HS"
mkdir -p "${BASE_DIR}/build/PlemolSC35_HS"
mkdir -p "${BASE_DIR}/build/PlemolSC35Console_HS"
mv -f "${BASE_DIR}/"PlemolSC35Console*.ttf "${BASE_DIR}/build/PlemolSC35Console_HS/"
mv -f "${BASE_DIR}/"PlemolSC35*.ttf "${BASE_DIR}/build/PlemolSC35_HS/"
mv -f "${BASE_DIR}/"PlemolSCConsole*.ttf "${BASE_DIR}/build/PlemolSCConsole_HS/"
mv -f "${BASE_DIR}/"PlemolSC*.ttf "${BASE_DIR}/build/PlemolSC_HS/"
}

function mvBuildNF() {
mkdir -p "${BASE_DIR}/build/PlemolJPConsole_NF"
mkdir -p "${BASE_DIR}/build/PlemolJP35Console_NF"
mv -f "${BASE_DIR}/"PlemolJP35Console*.ttf "${BASE_DIR}/build/PlemolJP35Console_NF/"
mv -f "${BASE_DIR}/"PlemolJPConsole*.ttf "${BASE_DIR}/build/PlemolJPConsole_NF/"
rm -f "${BASE_DIR}/"PlemolJP*.ttf
mkdir -p "${BASE_DIR}/build/PlemolSCConsole_NF"
mkdir -p "${BASE_DIR}/build/PlemolSC35Console_NF"
mv -f "${BASE_DIR}/"PlemolSC35Console*.ttf "${BASE_DIR}/build/PlemolSC35Console_NF/"
mv -f "${BASE_DIR}/"PlemolSCConsole*.ttf "${BASE_DIR}/build/PlemolSCConsole_NF/"
rm -f "${BASE_DIR}/"PlemolSC*.ttf
}

DEBUG_FLG='false'
Expand Down
4 changes: 2 additions & 2 deletions old_script/os2_patch.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ BASE_DIR=$(cd $(dirname $0); pwd)
PREFIX="$1"

xAvgCharWidth_SETVAL=528
FONT_PATTERN=${PREFIX}'PlemolJP[^3]*.ttf'
FONT_PATTERN=${PREFIX}'PlemolSC[^3]*.ttf'

xAvgCharWidth35_SETVAL=1000
FONT35_PATTERN=${PREFIX}'PlemolJP35*.ttf'
FONT35_PATTERN=${PREFIX}'PlemolSC35*.ttf'

for P in ${BASE_DIR}/${FONT_PATTERN}; do
ttx -t OS/2 -t post "$P"
Expand Down
Loading
Loading