이 디렉토리에는 일본/중국/한국 타이포그래피를위한 OpenType 문맥 반 폭 간격 기능을위한 도구가 포함되어 있습니다.
이 기능을 사용하면 JLREQ 3.1.2 구두점 마크 (쉼표, 기간 및 괄호)의 위치 지정에 설명 된 타이포그래피는 구두점 마크, 괄호 등을 배치하는 기본 방법 및 CLREQ 3.1.6.1 구두점 조정 SpacetAppoint 코드 조정 공간을 중국어에 적용 할 수 있습니다. 다음은 jlreq의 그림입니다.
Adobe CJK Type Blog Article과 Part II의 초기 토론은이 기능을 더 잘 이해하는 데 도움이 될 수 있습니다.
여기에서 샘플 텍스트를 찾을 수 있습니다. 이 샘플 페이지는이 도구로 구축 된 글꼴을 사용합니다.
OpenType은이 기능을 지원하기 위해 글꼴에 대한 4 개의 기능 태그를 정의합니다.
chws "기능 태그 및 " vchw "기능 태그는 수직 유량에 대응합니다.halt "기능 태그 및 " vhal "기능 태그는 수직 유량에 대응합니다.각 기능이 다른 컨텍스트에서 적용되므로 4 가지 기능이 모두 필요합니다.
이 패키지는 유니 코드 코드 포인트 및 Glyph 윤곽선과 같은 데이터에서 기능 테이블을 계산하여 누락 될 때 OpenType/Truetype 글꼴에 이러한 기능을 추가합니다.
PIP 또는 PIPX 로이 도구를 설치할 수 있습니다.
pipx install east-asian-spacingpip install east-asian-spacing글로벌 환경에서 PIP에 설치하면 그 종속성이 다른 패키지와 충돌 할 수 있습니다. 필요한 모든 것이 명령 줄 도구 인 경우 PIPX는 가상 환경에서도 여전히 분리하면서 전역으로 설치할 수 있습니다.
Python 프로그램 에서이 패키지를 사용하려는 경우 설치 패키지 섹션 또는 클론 및 설치 섹션을 참조하십시오. 자세한 내용은 글꼴 또는 코드를 진단하려면 설치 섹션을 참조하십시오.
다음 예제는 input-font-file 에 기능을 추가하여 build 디렉토리에 저장합니다.
east-asian-spacing -o build input-font-file테스트 섹션에는 차이점을 확인하고 구축 한 글꼴 테스트 글꼴이 있습니다.
다른 옵션 및 사용법의 경우 --help 옵션은 전체 옵션 목록을 표시 할 수 있습니다.
알고리즘은 모든 CJK 글꼴에 적용됩니다. 각 릴리스에서 다음 글꼴을 테스트합니다.
fonts.google.com의 CJK 글꼴은 CHWS_TOOL 패키지로 테스트됩니다. 개발 중에 다른 여러 글꼴도 테스트되었습니다.
기능을 글꼴에 추가 할 때 테스트 HTML은 결과를 확인하는 편리한 도구입니다. 글꼴에 문제가 발생하면 문제를보고하십시오.
또한 글꼴의 기본 동작을 사용자 정의하려면 아래의 고급 주제를 참조하십시오.
입력 글꼴 파일이 TRUETYPE 컬렉션 (TTC) 인 경우이 도구는 기본적으로 TTC의 모든 글꼴에 기능을 추가합니다.
TTC의 일부 글꼴에만 기능을 추가하려면 쉼표로 구분 된 글꼴 인덱스 목록을 지정할 수 있습니다. 다음 예제는 기능을 글꼴 인덱스 0 및 1에 추가하지만 TTC의 다른 글꼴에는 추가되지 않습니다.
east-asian-spacing --index=0,1 input-font-file.ttc시, PIPENV 또는 PIP와 같은 좋아하는 패키지 관리 도구를 사용 하여이 패키지를 설치할 수 있습니다.
pip install east-asian-spacingpipenv install east-asian-spacingpoetry add east-asian-spacing자세한 내용으로 글꼴 또는 코드를 진단하려면 클론 및 설치 섹션을 참조하십시오.
다음 예제는 기능이 적용 가능한 경우 " build "디렉토리의 기능이있는 글꼴을 만듭니다.
import east_asian_spacing
async def main_async ():
builder = east_asian_spacing . Builder ( "fonts/input.otf" )
output_path = await builder . build_and_save ( "build" )
if output_path :
print ( f"Saved to { output_path } " )
else :
print ( "Skipped" )브라우저에서 글꼴의 동작을 확인하기 위해 테스트 HTML 페이지를 사용할 수 있습니다.
현지에서 만든 글꼴을 테스트 할 수 있습니다.
<script> 블록의 시작 부분에서 글꼴 파일을 " fonts "목록에 추가하십시오.참고, TTC (Truetype Collection)를 테스트하려는 경우 브라우저는 TTC에서 첫 번째 글꼴 만로드 할 수 있으며 다음 명령은 OpenType Collection Font 파일 (.TTC 또는 .otc)에서 모든 OpenType 글꼴 (.otf 또는 .ttf)을 추출합니다.
east-asian-spacing ttc build/NotoSansCJK-Regular.ttc dump 하위 명령은 다양한 유형의 텍스트 덤프 파일을 만들 수 있습니다.
가장 간단한 사용법은 테이블 목록을 표시하는 것입니다. 이는 TTC (Truetype Collections)를 제외하고 TTX의 " -l "옵션과 유사하며,이 도구는 TTC의 모든 글꼴 테이블과 어떤 테이블이 어떤 글꼴과 공유되는지 표시 할 수 있습니다.
east-asian-spacing dump build/NotoSansCJK-Regular.ttc " -o "옵션은 지정된 디렉토리에서 테이블 목록 파일을 만듭니다.
east-asian-spacing dump -o build/dump build/ * .ttc " --ttx "옵션은 테이블 목록 파일 외에 모든 테이블의 ttx 텍스트 덤프를 만듭니다. TTC (Truetype Collections)에 모든 테이블을 버릴 수 있다는 점을 제외하고는 TTX의 " -s "옵션과 유사합니다.
east-asian-spacing dump -o build/dump --ttx build/ * .ttc dump 하위 명령은 두 개의 글꼴 파일의 덤프 파일을 만들어 비교할 수 있습니다. 이를 통해 두 글꼴, 특히 원래 글꼴 파일에서 만든 글꼴 파일의 차이를 시각화하는 데 도움이됩니다.
east-asian-spacing dump -o build/diff --diff source_fonts_dir build/NotoSansCJK.ttc 위의 예는 다음 3 개의 파일 세트를 작성하여 source_fonts_dir/NotoSansCJK.ttc 와 build/NotoSansCJK.ttc 의 차이를 계산합니다.
build/diff/dump 디렉토리의 build/NotoSansCJK.ttc 용 테이블 목록 및 TTX 텍스트 덤프 파일.build/diff/src 디렉토리에서 source_fonts_dir/NotoSansCJK.ttc 용 테이블 목록 및 TTX 텍스트 덤프 파일.build/diff 디렉토리에있는 두 덤프 파일 세트의 Diff 파일.참고 : "
--diff"옵션은 이진이 이진적 일 때 테이블의 TTX를 생성하는 것을 건너 뛰기 때문에 특히 큰 글꼴의 경우이 모든 작업을 수행하는 것보다 더 효율적입니다.
-o 옵션은 선택 사항입니다. 그것이 생략되면, 하위 명령은 diff를 stdout 에 출력합니다.
east-asian-spacing dump --diff source_fonts_dir build/NotoSansCJK.ttc | less구축 한 모든 글꼴에 대한 Diff 파일을 만들려면 다음과 같이 출력을 파이프 할 수 있습니다.
east-asian-spacing -p * .otf | east-asian-spacing dump -o build/diff - " -p "옵션은 입력 및 출력 글꼴 경로를 Tab-Separated-Values 형식으로 stdout 으로 인쇄합니다. " - "인수가있는 dump 하위 명령은 stdin 에서이 목록을 읽고 build/diff 디렉토리에 텍스트 덤프와 diff 파일을 만듭니다. 소스 글꼴 경로가 파이프에서 제공 되므로이 경우 " --diff "옵션은 필요하지 않습니다.
위에서 만든 Diff 파일을 검토하거나 빌드 한 글꼴을 검토 한 후 Diff 파일을 references 디렉토리에 복사 할 수 있습니다. 그런 다음 글꼴이 업데이트 될 때 또는 빌드 환경이 변경 될 때와 같이 다시 빌드하려면 Diff 파일을 참조 파일과 비교하여 새 글꼴이 이전 빌드와 어떻게 다른지 알 수 있습니다.
" -r "옵션을 사용하면 dump 하위 명령은 두 글꼴 파일 사이에 Diff 파일을 생성하고 Diff 파일을 references 디렉토리에서 한 번 검토 된 Diff 파일과 비교합니다.
이 옵션의 일반적인 사용은 다음과 같습니다.
east-asian-spacing -p -g=build/glyphs * .otf |
east-asian-spacing dump -o=build/diff -r=references - " -p "옵션 및 배관의 Diff 섹션을 참조하십시오.
build*.sh 스크립트에는이 옵션이 포함됩니다.
모양 테스트는 테스트 문자열을 테스트하고 상황에 맞는 간격이 적용되는지 여부를 확인합니다.
--test 옵션은 모양 테스트 레벨을 설정합니다.
east-asian-spacing --test 2 -v -o build input-font-file레벨 0은 모양 테스트를 비활성화합니다. 레벨 1은 작은 샘플 세트를 사용하여 연기 테스트를 실행합니다. 레벨 2는 큰 테스트 문자열 세트를 사용하여 모양 테스트를 실행합니다. 기본값은 1입니다.
알고리즘은 언어 불가지론 적이며 모든 CJK 글꼴에 적용 할 수 있습니다.
이 패키지는 Glyph 쌍을 결정하여 Config 클래스에 정의 된 유니 코드 코드 포인트 세트로 간격을 조정합니다.
그런 다음 각 쌍에 대해 글리프 외곽선을 검사하고 글리프의 잉크 경계 상자를 컴퓨팅하여 간격이 적용되는지 확인합니다. 예를 들어, 글리프가 매우 두껍고 글리프는 충분한 내부 간격이 없을 수 있으며, 간격을 적용하면 글리프가 충돌 할 수 있습니다. 이 패키지는 이러한 경우를 자동으로 감지하고 그러한 쌍에 간격을 적용하지 않습니다.
이 자동 동작은 아래 언어를 지정하거나 Python 프로그램에서 Config.use_ink_bounds False 로 설정하여 비활성화 할 수 있습니다.
구두점 캐릭터가 글리프 공간에 배치되는 언어 별 규칙이 있습니다. 예를 들어, U+3002의 사원 학적 전체 정지는 글리프 공간의 왼쪽 바닥 모서리에 일본어로 배치되어야하며 전통적인 중국의 중심에 배치해야합니다.
기본적 으로이 패키지는 위의 알고리즘 섹션에 설명 된대로 Glyph 외곽선과 이러한 차이를 결정합니다. 그러나 OpenType Language System 태그를 지정 하여이 패키지가 Glyph 외곽선을 사용하는 대신 언어 규칙을 따를 수 있습니다. 다음 예제는 Glyph 외곽선의 자동 결정을 비활성화하고 글꼴이 일본 글꼴임을 지정합니다.
east-asian-spacing --language=JAN input-font-fileTTC (Truetype Collection)의 경우 언어 옵션은 기본적으로 TTC의 모든 글꼴에 적용됩니다. TTC의 각 글꼴에 다른 언어를 지정하려면 쉼표로 구분 된 목록을 수용합니다. 다음 예는 글꼴 인덱스 1 용 한국, 글꼴 인덱스 2의 경우 중국어를 단순화하고 다른 모든 글꼴의 경우 자동을 지정합니다.
east-asian-spacing --language=,KOR,ZHS input-font-file.ttc 이 두 가지 옵션을 결합 할 수 있습니다. 다음 예제는 JAN 인덱스 2에, ZHS 인덱스 3에 적용됩니다. TTC의 다른 글꼴은 변경되지 않습니다.
east-asian-spacing --index=2,3 --language=JAN,ZHS input-font-file.ttc글꼴이 일부 문자에 대한 간격이 예상되지 않은 경우와 같은 경우, 간격을 조정 해야하는 문자 페어를 조정할 수 있습니다. 현재 이것은 파이썬 프로그램에서만 가능합니다.
간단한 예는 tests/config_test.py 의 test_config 함수를 참조하십시오.
CHWS_TOOL 프로젝트는이 패키지를 사용자 정의하는 실제 예입니다.
이 패키지는 Cython 바인딩 Uharfbuzz를 사용하여 Harfbuzz 쉐이핑 엔진을 사용합니다.
Harfbuzz의 특정 빌드를 사용하려면이 도구를 사용하면 SHAPER Environment 변수를 설정하여 외부 HB-Shape Command Line 도구를 호출 할 수 있습니다.
export SHAPER=hb-shapeLinux 용 HB-SHAPE를 설치하려면 :
sudo apt get libharfbuzz-binHomebrew와 함께 Mac 용 HB-Shape를 설치하려면 :
brew install harfbuzz다른 플랫폼에 대한 지침은 command-nofound.com에서 제공 될 수 있습니다.
글꼴 또는 코드를 진단 해야하는 경우시를 사용하여 복제 및 설치하는 것이 좋습니다.
git clone https://github.com/kojiishi/east_asian_spacing
cd east_asian_spacing
poetry install
poetry shell이 방법은 다음과 같은 장점이 있습니다.
-e "옵션 또는 setuptools "Development Mode")에 설치됩니다.원하는 경우 PIP를 사용하여 복제 된 디렉토리를 설치할 수도 있습니다.
git clone https://github.com/kojiishi/east_asian_spacing
cd east_asian_spacing
pip install .이 저장소에는 Pytest를 사용한 단위 테스트가 포함되어 있습니다. 단위 테스트는 모양 테스트, 테스트 글꼴에 기능을 추가하고 참조와 비교하는 기본 기능을 다룹니다.
복제 및 설치 섹션을 따르는 경우 단위 테스트 도구가 이미 설치되어 있습니다. 처음 실행하기 전에 테스트 용 글꼴을 다운로드해야합니다.
./tests/download_fonts.py그런 다음 테스트를 실행할 수 있습니다.
pytest또는 Tox를 사용하여 여러 버전의 파이썬으로 실행하십시오.
tox scripts 디렉토리에는 작은 쉘 스크립트가 있습니다.
build*.sh 스크립트는 글꼴을 빌드하고 소스 글꼴과 다르게 계산하고 Diff 파일을 참조와 비교하는 데 유용합니다. 다음은 예제 사용입니다.
./scripts/build.sh input-font-file.otf -v
./scripts/build-noto-cjk.sh ~ /fonts/noto-cjk -v