Script 메뉴 표출명: Claude: View Element Node Count Monitor - All Masters_v4.95
이 스크립트는 FontLab 8에서 Glyph Window나 Font Window에서 선택한 글자(Glyph)의 각 마스터 별 글자 조각(Shape) 순서를 표시하고, 글자 조각(Shape)과 컨투어(Contour)의 노드(Node) 개수를 한눈에 비교하고 정리할 수 있게 해주는 도구입니다.
인터폴레이션을 통해 여러 굵기(Weight)를 가진 폰트를 생성할 때나 가변 폰트(Variable Font)를 만들 때 마스터 간에 글자 조각(Shape)이 위치한 순서, 대응되는 Shape의 노드 개수, 각 Shape 안에 존재하는 Contour의 순서와 노드 개수 통일이 제일 중요합니다. 이 스크립트는 이들의 오류를 시각적으로 보여줄뿐만 아니라 쉽게 수정할 수 있도록 돕습니다.
이 스크립트는 폰트랩 8에서멀티플 마스터 파일일 때Layers & Masters 패널과 Elements 패널이 모두 열려 있어야 정상 동작을 합니다. 멀티플 마스터 파일에서 Layers & Masters 패널이나 Elements 패널이 열려 있지 않으면 스크립트 실행시 안내 메시지가 나타납니다.
1. 스크립트 주요 기능
한눈에 보는 다중 마스터:폰트랩의 Glyph Window나 Font Window에서 선택된 글자의 모든 Shape와 Contour의 노드 수를 마스터별로 나란히(컬럼 형태) 보여줍니다. 스크립트 창에 나타난 Shape의 순서와 노드 개수는 폰트랩의 Element 패널에 나타난 것을 그대로 읽어 표시합니다. 따라서 Element 패널에서 각 마스터 사이의 Shape의 순서가 어긋나 있으면 그 상태를 정확히 보여줍니다.
시각적 썸네일 제공:각 Shape가 어떻게 생겼는지 작은 썸네일로 미리 보여줍니다.
원클릭 자동 정렬:'기준 마스터와 동일하게 정렬' 버튼 하나만 누르면, 복잡하게 꼬인 모든 마스터의 Shape와 Contour 순서가 기준 마스터와 똑같이 자동 정렬됩니다. 단, 각각의 마스터가 Shape 구성, Contour 구성, Node 개수가 모두 동일하지만, 위치하는 순서만 다를 때 유효합니다.마스터 사이에 Shape 구성, Contour 구성, Node 개수가 서로 다른 것을 자동으로 수정하는 기능이 아닙니다.
접기/펼치기 버튼: '기준 마스터와 동일하게 정렬' 버튼 오른쪽에 있는 접기(▲)/펼치기(▼) 버튼을 클릭해 스크립트 창을 접었다 펼쳤다 할 수 있습니다.
드래그 앤 드롭 순서 변경:스크립트 창 안에서 마우스로 드래그하여 마스터에 있는 Shape와 Contour의 순서를 바꿀 수 있습니다. 이제 글자가 너무나 작게 표시되는 폰트랩의 Element 패널을 바라보지 않아도 됩니다.
실시간 오류(Mismatch) 감지:마스터 간에 Shape 순서가 다르거나, 노드 개수가 다르거나 하여 문제가 있으면 셀 배경색을 주황색으로 표시하여 즉각적으로 알려줍니다.
강력한 검색 패널:기준으로 설정한 마스터와 1)Shape 순서가 일치하지 않는 마스터, 2)대응되는 Shape별 노드 개수가 일치하지 않는 마스터가 있는 글자를 검색합니다.
용어정의 Shape - 글자 조각을 가리킵니다. 흔히 아웃라인(Outline), 패스(Path)라고 부르기도 하는데, 폰트랩 프로그램에서 사용하는 정확한 명칭은 Shape입니다. 시각적으로는 Element 패널의 하나의 층(Layer)에 나타나는 것이 한 개의 Shape입니다. 따라서 ㅈ을 하나의 층에 있도록 만들면 ㅈ이 한 개의 Shape가 되며, ㅈ을 ㅡ, ㅅ 형태로 구성하여 별도의 층이 배치했다면 ㅡ도 Shape, ㅅ도 Shape가 됩니다. 한편, ㅈ을 ㅡ, ㅅ 형태로 구성했더라도 이들이 하나의 층에 있으면 ㅡ, ㅅ이 겹쳐진 상태가 하나의 Shape가 됩니다. 2개 이상의 글자 조각이 하나의 층에 있는 것을 폰트랩에서는 '결합으로 묶기(Combined Element)'라고 부릅니다(그룹으로 묶기와 구별되는 개념입니다). 결합으로 묶인 개체는 하나의 Shape입니다. '좀' 글자의 ㅈ을 ㅡ, ㅅ으로 구성하여 개별 Layer에 배치한 모습, ㅡ과 ㅅ이 각각 하나의 Shape입니다.
'좀' 글자의 ㅈ을 ㅡ, ㅅ으로 구성하여 ㅡ, ㅅ을 동일한 Layer에 배치한 모습 , ㅈ이 하나의 Shape이며, 그 내부에 있는 ㅡ, ㅅ은 ㅈ을 이루는 Contour가 됩니다.
Contour - Shape 안에 존재하는 '최소의 분리 가능한 도형 1개'를 말합니다. ㅁ은 바깥쪽 큰 네모( ■ ), 안쪽 작은 네모( ◾ ) 두 개가 존재하며, 두 도형이 겹쳐진 상태에서 Contour Direction이 반대이면 안쪽을 빵꾸(?)내서 보여주는데, 큰 네모가 1개의 Contour가 되고, 작은 네모도 한 개의 Contour가 됩니다. 그래서 ㅁ은 ■, ◾ 라는 두 개의 Contour를 가집니다. 또 ㅁ에 특별한 변형이나 곡선적 요소를 가하지 않고 사각형으로만 만든 경우라면 ■은 노드 4개, ◾도 노드 4개로 구성됩니다.
※폰트랩에서 사용되는 폰트 → 글립 → Element → Shape → Contour 계층구조에 대한 자세한 설명은 다음 문서를 참고하세요.
회색 배경: 현재 선택하여 작업 중인 마스터를 나타냅니다. 마스터의 칼럼(열)을 클릭하면 활성 마스터가 해당 마스터로 바뀝니다. 즉, Masters & Layers 패널에서 마스터 이름을 클릭하는 것과 동일한 기능입니다.
주황색 배경:오류! 기준 마스터와 노드 개수가 다르거나 순서가 맞지 않는(Mismatch) 마스터입니다. 이 부분을 수정해야 인터폴레이션과 가변 폰트가 정상적으로 작동합니다.
Mismatch의 판단은 항상 '기준 마스터'를 기준으로 합니다. 따라서 기준 마스터를 변경하면 오류 상황이 달라집니다. 아래 그림은 'SemiBold'가 기준 마스터일 때의 오류 상황입니다. 만약 기준 마스터를 Thin으로 변경하면 오류 상황이 달라집니다. 기준 마스터 변경은 마스터 이름으로 표시된 단추를 '더블클릭'하면 됩니다.
기준 마스터가 'SemiBold'이며, Thin과 ExtraBold 마스터는 Shape 순서가 기준 마스터와 다른 상태입니다.
🔤 Contour 구분용 마커 (•, _)
ⅲ, Ⅲ, ≡ 처럼하나의 Shape 안에 모양과 노드 개수가 완전히 똑같은 도형(Contour)이 여러 개 있을 때, Element 패널에서 이들의 위치한 순서를 눈으로 구분하기가 매우 어렵습니다. Element 패널은 아주 작은 썸네일 이미지로 이들을 보여주기 때문입니다.
ⅲ를 하나의 Shape로 구성한 모습입니다. Element 패널에 보이는 이미지가 너무 작아 굳이 '노안'이 아니어도 각각의 Contour 배치를 쉽게 알아보기 힘듭니다. (어? 시나리오와 다르게 잘 보인다???)
이 스크립트는 Contour를 시각적으로 구별할 수 있도록 '하나의 Shape 안에' 노드 개수가 같은 Contour들이 있으면 순위를 매겨 시각적 마커를 달아줍니다.
순위 기준은 Ymax → Xmin → BBox 크기→ Element 패널에서 위치한 순서 순으로 판단합니다.
1순위 윤곽선: 오른쪽에 중간점(•) 표시
2순위 윤곽선: 표시 없음
3순위 윤곽선: 작은 밑줄(_) 표시
4순위 이후: 표시 없음
'알' 글자에서 ㅇ을 구성하는 두 개의 동그라미 Contour의 썸네일 이미지도 나타나고 각각이 쩜과 안쩜으로 구분되어 표시됩니다.
Ymax는 Y축 최상단 좌표, Xmin은 X축 시작점 좌표, BBox는 해당 Contour의 넓이를 의미합니다. 따라서 = 문자에서 두 개의 가로막대가 하나의 Shape로 구성되어 있다면 위쪽 ㅡ에 쩜이 찍힙니다. 동일한 기준으로 Ⅲ는 Ymax가 모두 같으므로 Xmin이 적용되어 제일 왼쪽에 있는 ㅣ가 1순위가 되어 쩜이 찍힙니다. 쩜이 찍히는 상황은 반드시 '동일한 Shape 안에 존재하는 동일한 특징을 가지는 Contour에 한합니다. 만약 Ⅲ의 ㅣ가 Element 패널에서 서로 다른 레이어에 위치해 있으면 썸네일 이미지를 통해 시각적으로 충분히 구분할 수 있기 때문에 쩜을 찍지 않습니다.
3. 핵심 기능 사용 방법
[기능 1] 기준 마스터 설정 및 변경하기
기준이 되는 마스터(예: Regular 또는 Thin)를 설정하는 기능입니다. 기본값으로 홀수개의 마스터를 가진 폰트 파일은 중앙에 위치한 마스터, 짝수개의 마스터를 파일은 중앙 바로 오른쪽의 마스터가 '기준 마스터'로 설정됩니다. '중앙'은 마스터의 Weight 값을 통해 판단합니다.
기준 마스터 변경 방법: 스크립트 창 상단의 '기준 마스터' 행에서 원하는 마스터의 버튼을 '더블클릭' 하세요. 클릭이 아니라 '더블클릭'입니다.
기준 마스터가 변경되면, 썸네일 미리보기의 굵기 등 기준이 해당 마스터로 즉시 변경되며, 오류 체크도 새롭게 지정한 기준 마스터를 기준으로 하여 다시 수행됩니다.
[기능 2] 원클릭 자동 정렬 (핵심 기능)
작업을 하다 보면 마스터마다 Shape와 Contour 순서가 뒤죽박죽 섞일 때가 있습니다. 이를 한 번에 해결합니다.
사용 방법: 먼저 파란색 버튼으로 표시된 기준 마스터를 정리정돈합니다. 이어서 [기준 마스터와 동일하게 정렬] 버튼을 클릭하면 됩니다.
결과: 모든 마스터의 Shape와 Contour 순서가 '기준 마스터'의 순서에 맞춰 자동으로 정렬됩니다.
작업 팁: Shape와 Contour 정렬이 맞지 않을 때 각각의 마스터에 들어가 일일이 순서를 변경할 필요가 없습니다. 기준 마스터에서만 손을 본 후 '기준 마스터와 동일하게 정렬' 버튼을 클릭하세요. 한방에 정리됩니다.
'기준 마스터와 동일하게 정렬' 버튼을 누르면 기준 마스터에 맞추어 mismatch 마스터가 자동으로 정렬됩니다.
[기능 3] 마우스 드래그 앤 드롭으로 Shape와 Contour의 위치 변경
특정 Shape나 Contour의 순서를 수동으로 바꾸고 싶을 때, 이제 FontLab의 Element 패널을 이용하지 않아도 됩니다.
위치 변경 방법: 스크립트 창 안에서 이동시키고 싶은 Shape나 Contour 셀 위에 마우스 포인터를 위치시키고 마우스 왼쪽 버튼을 누른 상태에서 위/아래로 드래그 앤 드롭 하세요.
결과: 해당 마스터에서 순서 변경이 즉각 적용됩니다. 이동하는 위치는 파란 가로선의 아래쪽입니다. 스크립트 창에서 순서를 이동하면 그 결과는 Element 패널에서도 바로 반영됩니다.
드래그 앤 드롭으로 Shape와 Contour의 순서를 바꿀 수 있습니다.필요에 따라 스크립트 창을 접었다/폈다 할 수 있습니다. 스크립트 창에서 Shape나 Contour의 순서를 바꾸면 Element 패널에서도 실제로 Shape와 Contour의 순서가 바뀝니다.
[기능 4] 검색 패널 활용 (펼치기/접기)
모든 마스터를 대상으로 기준 마스터에 비해 Mismatch 상태인 글자를 찾아줍니다. 따라서 검색을 수행하기 전에 '기준 마스터'를 먼저 확인하세요.
검색 창 열기: 제일 아래에 위치한 [Node Count가 일치하지 않는 글자 검색] 버튼을 클릭하면, 메인 창 아래로 검색 패널이 펼쳐지면서 자동으로 검색이 진행됩니다.
검색된 결과 새창으로 열기:검색 결과가 나타나면 '검색 결과를 새창으로 불러오기' 단추를 눌러 오류로 검출된 글자를 Glyph Window에 불러올 수 있습니다.
오류를 수정한 뒤에는 검색 기능을 다시 수행해서 오류 검출을 수행해주세요. ㅎ과 같이 여러 개의 Contour를 가진 Shape를 Element Reference 기능으로 여러 글자에 사용한 경우, ㅎ의 Contour 순서를 변경하면 이 글자에서는 정렬이 올바른데, 다른 글자에서는 정렬이 어긋나는 '의도치 않은 경우'가 발생할 수도 있습니다.
Shape와 Contour의 순서를 배치하는 일관된 기준을 정립해두어야 합니다. 필자는 ①모음먼저 ②우측에서 좌측으로 ③자음배치 ④위에서 아래로의 원칙으로 배치하고 있습니다. 따라서 '말' 글자는 ㅏ, ㅁ, ㄹ의 순서로 배치되며, '활' 글자는 ㅏ, ㅗ, ㅎ, ㄹ의 순서로 배치되고, ㅎ은 ㅗ, 큰동글, 작은동글 순서로 배치됩니다. 여러분도 자신만의 배치 순서가 있겠죠?
검색 기능을 이용하여 Mismatch된 글자들을 검색할 수 있습니다.
맥용 폰트랩 8에서 정상 동작 확인하였습니다.
검색된 결과가 500자를 넘을 경우 이들을 모두 새창으로 불러오려고 하면 '너무 많은 글자를 글립창으로 불러들이면 폰트랩에 과부하가 생깁니다'라는 안내문이 나타납니다. 검색 결과 창 하단의 '복사' 단추를 누르면 검색 결과가 모두 복사되며, 검색 결과에서 일부분만 블록으로 지정하고 '복사' 단추를 누르면 해당 글자만 복사됩니다. 이렇게 복사한 후 메모장 등에 붙여넣어 이용하세요.
검색 창 닫기: [접기] 버튼을 누르면 검색 패널이 사라지며 메인 윈도우만 남습니다.
4. 작업 팁
다중 파일 지원: 여러 개의 폰트 파일을 열어놓고 작업하더라도, 작업 폰트를 바꿀 때마다 스크립트가 알아서 해당 폰트의 마스터 이름을 읽어와 컬럼을 자동으로 갱신합니다.
폰트랩을 종료하면 스크립트 창도 종료: 이 스크립트 창은 FontLab의 메인 창에 종속(Fontlab 메인 창을 부모로 지정)되어 있습니다. 따라서 FontLab을 종료하면 스크립트 창도 안전하게 함께 종료됩니다.
실시간 연동: Glyph Window에서 글자 조각에 노드를 추가하거나 삭제하면, 스크립트 창의 노드 카운트 숫자도 실시간으로 반영됩니다. 작업 후 항상 스크립트 창에 주황색 경고(Mismatch)가 떠 있는지 확인하면 좋습니다.
※폰트 디자인의 후반기 작업 편의성을 위해 만든 스크립트입니다. 스크립트를 사용하다 기능 개선 사항, 버그 등이 있으면 언제든지 댓글 달아주세요.
스크립트 설치 방법: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 파일에 자세하게 설명되어 있습니다.