Fontlab Type Design

엘레먼트 상대위치값 모니터 - AI와 폰트랩 파이썬 스크립트(Fontlab Python Script) 본문

9_폰트랩_파이썬_스크립트

엘레먼트 상대위치값 모니터 - AI와 폰트랩 파이썬 스크립트(Fontlab Python Script)

Fontlab 2026. 5. 28. 14:06

(2026.06.03  03:10) - v2.0: 스크립트 창 하단에 'Transform Offset Scanner' 버튼 추가

(2026.06.10  21:05) - v2.5: 스크립트의 셀을 선택하면 Elements 패널에서 해당 Shape가 선택되도록 연동

(2026.06.12  16:00) - v2.8: 스크립트 창 접기/펼치기 버튼 삽입, 패널 의존성 검사 로직 추가

FontLab 8: Element Offset Monitor (v2.8) 매뉴얼

Script 메뉴 표출명:  Claude: View Element Offset Value - All Masters_v2.8

 

Pain point: 폰트랩은 글자 조각(Shape)의 위치 설정을 할 때 '상대위치(Offset)'라는 개념을 사용할 수 있습니다. 원래 위치로부터 X축 얼마, Y축 얼마 이동했다는 정보를 가지면서 위치를 설정할 수 있는 것입니다. 상대위치 이동은 동일한 글자 조각(Shape)을 여러 글자에 연결하여 사용했을 때(Element Reference 기능 또는 Component 기능) 다른 글자에는 영향을 주지 않고 위치를 이동할 수 있게 해줍니다. 그런데 폰트랩의 불안정성 때문인지 상대위치 이동이 마스터들 사이에 유사하지 않을 경우 인터폴레이션 과정에서 문제가 발생합니다. 올바른 위치에 있음에도 불구하고 상대위치 값이 다른 마스터들과 확연히 차이나게 설정된 것이 있을 때(경험상 100단위가 넘는 차이일 때) 인터폴레이션이 이상하게 동작하는 현상이 발생하는 것입니다. 따라서 폰트제작 완성 단계에 이를 때에는 상대위치값을 점검하는 것이 좋습니다.

글자 조각을 축소하고 테두리를 설정하여 '첨자' 숫자 7을 구성한 모습. Tranform 기능으로 축소하여 배치했기 때문에 상대 위치 이동값이 크게 설정된 상태입니다. 각 마스터 사이의 상대위치 숫자가 엇비슷하면 문제가 발생하지 않습니다.
Bold 마스터의 상대위치 값이 (0,0)으로 설정된 경우 숫자 7이 올바른 위치에 있음에도 불구하고 인터폴레이션 미리보기 과정이 망가집니다.

 

이 스크립트는 폰트랩 8에서 멀티플 마스터 파일일 때 Layers & Masters 패널과 Elements 패널이 모두 열려 있어야 정상 동작을 합니다. 멀티플 마스터 파일에서 Layers & Masters 패널이나 Elements 패널이 열려 있지 않으면 스크립트 실행시 안내 메시지가 나타납니다. 

 

 

이 스크립트는 FontLab 8에서 글리프(Glyph) 내 각 Shape의 Transform Offset(상대위치 이동 값)을 모든 마스터(Master)별로 한눈에 비교하고 확인할 수 있게 해주는 실시간 모니터링 도구입니다. 멀티플 마스터(Multiple Masters) 기반의 폰트 디자인 작업 시, 요소들의 위치 일관성을 효율적으로 검수할 수 있습니다.

 

 

1. 스크립트의 주요 기능

  • 실시간 마스터별 오프셋 확인: Font Window에서 선택된 글자 또는 Glyph Window에 열려있는 글자의 Shape들이 가진 Transform Offset (X, Y) 값(상대위치 이동값)을 전체 마스터에 걸쳐 나란히 보여줍니다. 
  • 직관적인 썸네일 제공: 각 Shape의 형태가 썸네일 이미지로 나타납니다. 어떤 요소를 수정 중인지 시각적으로 쉽게 파악할 수 있습니다.
  • 원클릭 마스터 전환: 데이터 목록에서 특정 마스터의 컬럼(셀)을 클릭하면 FontLab의 작업 화면이 해당 마스터로 즉시 전환됩니다.
  • Expand Transformation 기능 내장: FontLab 8의 Elements 패널에 있는 Expand Transformation 단추를 스크립트 상단에 이식하였습니다. 스크립트 창 최상단의 'Expand Transformation' 버튼을 클릭하면 Elements 패널의 'Expand Transformation' 버튼을 클릭한 것과 동일한 기능이 수행됩니다. 
  • 상대위치 검색 기능: X축과 Y축 상대위치 지정 범위에 해당하는 글자 조각(Shape)을 가진 글자를 검색합니다.

왜 Thin 마스터의 ━만 상대위치 이동값이 Y55나 되지? 타당한 이유가 있나? 지금부터 알아봐야지...를 이 스크립트로 파악할 있습니다.

 

 

2. 사용자 인터페이스(UI) 안내

UI 요소 기능 설명
Expand Transformation 버튼 상단에 가로로 길게 위치. 클릭 시 Elements 패널의 'Expand Transformation' 기능을 실행하여 선택한 Shape의 상대위치 값이 새로운 기준인 (0,0)이 되게 만듭니다. 
접기/펼치기 버튼 Expand Transformation 버튼 오른쪽에 있는 접기(▲)/펼치기(▼) 버튼을 클릭해 스크립트 창을 접었다 펼쳤다 할 수 있습니다. 이제 오류를 발견하여 Glyph Window에서 다량의 수정작업을 진행할 때 스크립트 창을 접어놓고 작업하세요.
마스터 목록 현재 작업 중인 폰트 파일에 있는 마스터를 감지하여 자동으로 나타납니다. 각 마스터의 셀을 클릭하면 해당 마스터로 이동합니다.
ELEMENTS 열 (좌측 썸네일) 각 Shape의 미리보기 썸네일이 표시됩니다. 시인성을 높이기 위해 폰트 내에서 가장 굵은 마스터를 기준으로 렌더링됩니다.
오프셋 데이터 셀 각 마스터별로 해당 Shape의 상대위치 (X, Y)값이 표시됩니다. 현재 활성화된(작업 중인) 마스터 셀은 회색 배경으로 강조되며, 선택된 셀은 짙은 회색으로 나타납니다. 셀과 Element 패널의 글자 조각(Shape)이 서로 연동되므로 셀을 클릭하면 그에 해당하는 Shape가 선택됩니다.
Transform Offset Scanner 지정한 범위에 있는 상대위치 이동값(Offset 값)을 가지는 글자를 검색합니다.

 

 

3. 사용 방법

  1. 글리프 확인: 글자를 Glyph Window로 불러들이면, 글자 조각(Shape)의 오프셋 수치가 스크립트에 나타납니다.
  2. 수치 비교 및 검수: 가로축으로 데이터를 읽으며 여러 마스터에 걸쳐 글자 조각(Shape)의 상대위치(X, Y)가 의도대로 설정되었는지 확인합니다.
  3. 마스터 간 이동: 특정 마스터의 칼럼(열)을 클릭하면 해당 마스터로 진입합니다. FontLab의 Masters & Layers 패널에서 마스터의 이름을 클릭해 마스터를 선택하는 것과 동일한 동작입니다.
  4. Expand Transformation: 스크립트 상단에 가로로 길게 'Expand Transformation' 버튼이 나타납니다. Expand Transform 버튼은 특정 Shape의 오프셋 값을 '새로운 기준인 0,0으로 설정'하는 기능입니다. Glyph Window 또는 Elements 패널에서 Shape를 선택한 다음 Expand Transformation 버튼을 클릭하면 됩니다. 한편, 이 스크립트에 나타난 셀과 Element 패널의 Shape가 서로 연동되므로, 스크립트의 셀을 클릭하고 상단의 Expand Transformation 버튼을 클릭해도 됩니다.
Expand Transformation 버튼은 기준으로 삼는 Shape에 대해서만 사용하세요. 남용하면 기준이 되는 Shape가 뒤죽박죽 섞일 수 있습니다. 예를 들어 '몰믐물에 ㅡ를 5 유닛씩 위로 이동하여 사용했을 때는 '몰'의 ㅡ를 기준으로 삼는다'는 자신만의 정책이 있어야 합니다. 상대위치 이동값(Transform Offset) 기능에 대한 충분한 이해 없이는 Expand Transformation 버튼을 이용하지 마십시오.

v2.8에서 스크립트의 셀과 Elements 패널의 Shape가 연동되도록 기능 개선하였으며, 스크립트 창 접기/펼치기 버튼을 삽입했니다. ㅗ의 짧은 기둥 ㅣ는 Expand Transformation을 수행하면 안되는데, 셀을 클릭하여 해당 Shape를 직접 선택하는 동작이 가능하다는 것을 보여주기 위해, 선택해 (0,0)으로 바꾸어 본 것입니다.

 

※ Expand Transformation 기능
예컨대, '몰', '믈', '물' 글자에서 ㅡ를 Element Reference로 연결하여 사용하고 있는데,

'몰'의 는 상대위치 값이 (0,0), '믈'의 는 상대위치 값이 (0,5), '물'의 는 상대위치 값이 (0,10)

이라고 하면(즉, 믈에서는 ㅡ의 상대위치를 위로 5 올리고, 물에서는 10 올렸다는 뜻), '물' 글자의 ㅡ를 선택하고 'Expand Transformation' 버튼을 누르면 '물'의 ㅡ가 새로운 기준인 (0,0)이 되고, ㅡ를 연결하여 사용하고 있는 다른 글자에서는 '물'의 ㅡ에 맞추어 상대위치 숫자가 자동으로 변환됩니다. 그래서 '믈'의 ㅡ는 상대위치 값이 (0,-5)로 변하고, '몰'에서는 ㅡ의 상대위치 값이 (0, -10)으로 바뀌게 됩니다. 쉬운 표현으로 "얘들아, 이제부터 내가 0,0이다. 너희들은 나한테 맞추어서 모두 상대위치 숫자를 바꿔라" 하는 기능입니다.
선택한 Shape를 새로운 (0,0)의 기준으로 동작하게 하는 Expand transformation 버튼. Expand transformation 설정은 '글자 전체'가 아니라 '글자 조각(Shape)'에 대해 지정하는 기능입니다.

※폰트랩에서 '상대위치 이동'에 대한 자세한 내용을 탐구하려면 졸저 '폰트랩 타입 디자인' 책을 참고해주세요.

 

 

4. Transform Offset Scanner

X축, Y축 방향에 따라 지정한 상대위치 값의 범위를 가지고 있는 글자를 찾습니다. 오프셋 임계값은 OR 조건이므로, X축과 Y축 옵션을 체크하고 범위를 지정하면 둘 중 하나라도 만족하는 글자를 찾습니다. 오프셋 임계값으로 음수도 입력할 수 있습니다. 음수는 '-20 이상'으로 설정하면 -20 위쪽을 뜻하게 되므로, '이상' 항목의 숫자를 삭제하고 '이하' 항목에만 숫자를 입력하여 사용하시길 권합니다. 입력상자에 있는 숫자를 삭제하면 '-'로 나타나며, 아무것도 입력하지 않은 것으로 동작합니다.

맥용 폰트랩 8에서 정상 동작 확인하였습니다.

 

 

5. 참고 및 주의사항

  • 사전 요구 사항 (Dependencies): 이 스크립트는 TypeRig 라이브러리를 활용하여 데이터를 처리합니다. 따라서 스크립트가 정상 작동하려면 TypeRig 라이브러리가 폰트랩에 설치되어 있어야 합니다.
  • 자동 종료: 스크립트 창은 FontLab 메인 프로그램 윈도우에 종속되어 있으므로, FontLab을 닫으면 모니터링 창도 함께 안전하게 종료됩니다. 

●Claude_View_Element_Position_Offset_and_Search_All_Masters_v2.8.py
0.10MB

(2026. 06. 12 v2.8 업데이트 버전)


스크립트 설치 방법: Windows - 다운로드한 파일을 C:/문서/Fontlab/Fontlab 8/Scripts 폴더에 복사한 후 Fontlab을 재시작하거나, Fontlab의 Scripts 메뉴에서 제일 하단의 Refresh Scripts를 실행합니다. 다시 Script 메뉴를 열어 보면 스크립트 이름이 나타납니다. 이를 선택해 실행하면 됩니다.

macOS - 사용자/Library/Application Support/FontLab/FontLab 8/Scripts/ 폴더에 복사한 후 위의 과정과 동일하게 수행합니다. Library 폴더가 숨김 속성으로 되어 있어 보이지 않을 수도 있으므로 ChatGPT에게 숨김 속성 해제하는 방법을 물어봐서 처리하시면 좋습니다.

폰트랩에서 파이썬 스크립트를 사용하려면 반드시 TypeRig 라이브러리가 폰트랩에 설치되어 있어야 합니다. TypeRig 라이브러리가 설치되어 있지 않은 상태에서는 '대부분'의 폰트랩용 파이썬 스크립트가 실행조차 되지 않습니다. TypeRig 라이브러리 설치 방법은 첨부된 PDF 파일에 자세하게 설명되어 있습니다.
tistory_Fontlab_TypeRig_설치방법.pdf
1.39MB