
컴퓨터 비전을 사용하여 중국어를 단일 라인 글꼴로 변환하십시오
허쉬 글꼴과 같은 단일 라인 글꼴은 멋진 절차 그래픽을 만들고 조각에 큰 유용합니다. 그들은 또한 신경망에 대해 배우기가 더 쉽습니다.
이 도구는 정기적 인 True Type Font 파일 (TTF/TTC)이 주어진 중국 단일 라인 글꼴을 자동으로 생성합니다. 클래식 허쉬 형식 또는 모든 폴리 라인을 포함하는 JSON 파일을 출력 할 수 있습니다.
이 알고리즘은 문자의 래스터 렌더링을 여러 각도로 스캔하여 스트로크의 일부일 가능성이 높은 라인 세그먼트를 찾습니다. 그런 다음 라인 세그먼트를 연결, 병합 및 청소하여 스트로크를 추정합니다.

pip install pillow ) 다음은이 소프트웨어가 단일 라인 글꼴을 인코딩하기 위해 생성 할 수있는 파일 유형입니다.
하나의 객체가있는 JSON 파일. 객체의 키는 문자의 유니 코드 지수입니다. 각 키는 폴리 라인 배열에 맵핑됩니다. 폴리 라인은 포인트 배열입니다. 포인트는 x 및 y 좌표를 포함하는 2 요소 배열입니다. 좌표는 0.0에서 1.0 사이의 플로트이고 (0,0)은 상단 왼쪽 코너입니다. 예를 들어:
{
"U+4E00" :[[[ 0.0 , 0.55 ], [ 1.0 , 0.55 ]]],
"U+4E01" :[[[ 0.02 , 0.02 ], [ 0.99 , 0.02 ]], [[ 0.51 , 0.02 ], [ 0.53 , 0.925 ], [ 0.31 , 1.0 ]]]
}위의 인코딩에는 유니 코드의 첫 두 중국어 인 "一"및 "丁"가 포함됩니다.
허쉬 글꼴은 개발 된 벡터 글꼴 모음입니다. c. 1967 년 해군 무기 실험실에서 Allen Vincent Hershey 박사에 의해 원래 초기 캐소드 광선 튜브 디스플레이에서 벡터를 사용하여 렌더링되도록 설계되었습니다. 글꼴은 공개적으로 이용 가능하며 사용 제한이 거의 없습니다. 벡터 글꼴은 쉽게 스케일링되고 2 차원으로 회전됩니다. 결과적으로 Hershey Fonts는 컴퓨터 그래픽, 컴퓨터 보조 설계 프로그램 및 최근에는 레이저 조각과 같은 컴퓨터 보조 제조 응용 프로그램에서 널리 사용되었습니다. (위키 백과)
이 링크는 허쉬 글꼴을 구문 분석하는 방법에 대한 개요를 제공합니다. Lingdong-/P5-Hershey-JS에서 내 자신의 구현을 찾을 수도 있습니다.
스트로크 파일과 비교할 때 Hershey Fonts는 여러 배 더 컴팩트하지만 정확한 좌표도 덜합니다.
사전 생성 된 단일 라인 글꼴을 사용하는 데 관심이 있다면 다음 장소에서 가져올 수 있습니다.
메모:
Heiti.hf.txt 및 Kaiti.hf.txt 는 원래 독점적 인 MACOS 시스템 글꼴 STHeiti 및 STKaiti 를 기반으로했습니다. 그들은 이제 오픈 소스 대안으로 대체되었습니다.
사용자 정의 TTF/TTC 파일에서 새 단일 라인 글꼴을 생성하려면 먼저 다음 명령을 사용하여 JSON 인코딩 스트로크 파일을 생성하십시오.
python char2stroke.py build path/to/font.ttf
선택적 인수 :
--first [FIRST]
--height [HEIGHT]
--last [LAST]
--ngradient [NGRADIENT]
--output [OUTPUT]
--strw [STRW]
--width [WIDTH]
width 와 height 스캔 할 문자의 래스터 이미지의 치수를 결정합니다. 이 숫자가 클수록 더 상세하고 느리게. 기본값은 둘 다에 대해 100 입니다.strw 는 대략적인 스트로크 너비 (픽셀, 주어진 width 와 height )입니다. 스트로크를 병합 할 때 사용됩니다. 기본값은 10 입니다.first 포함 할 유니 코드 문자 범위를 지정 last . 기본값은 0x4e00 및 0x9fef 이며 모든 "CJK IDEOGRAPH"글리프를 포함합니다.ngradient 이미지를 스캔하는 데 사용되는 다양한 그라디언트의 수입니다. ngradient = 1 에서는 0 °, 45 ° 및 90 °에서의 스트로크 만 스캔 한 반면, 2 , 3 및 4 에서 atan(1/2) , atan(1/3) 및 atan(1/4) 의 경사면도 포함됩니다. 기본값은 2 입니다.output : 출력 파일을 쓰는 경로. 이것이 지정되지 않은 경우, 프로그램은 stdout 에 쓰고 > (정보) 및 | (정보)를 사용하여 출력을 리디렉션 할 수 있습니다.큰 파일을 생성하기 전에 작은 문자 세트에서 빠른 테스트를 수행하고 다른 글꼴이 어떻게 나타나는지 비교하고 매개 변수를 조정하는 것이 도움이됩니다. 다음 명령은 컴퓨터 비전 결과를 나란히 시각화 하여이 프로세스를 용이하게합니다.
python char2stroke.py test path/to/font1.ttf path/to/font2.ttf ...
선택적 인수 :
--corpus [CORPUS]
--height [HEIGHT]
--ngradient [NGRADIENT]
--nsample [NSAMPLE]
--strw [STRW]
--width [WIDTH]
corpus : 테스트 할 문자열. 기본값은 천 문자 클래식의 텍스트입니다.nsample : 코퍼스에서 무작위로 선택할 문자 수. 기본값은 8 입니다.build 모드와 동일합니다.다음 명령은 이전 단계에서 생성 된 스트로크 파일에서 허쉬 글꼴을 생성합니다.
python tohershey.py path/to/input.json > path/to/output.hf.txt
