เอกสารสำหรับผู้ใช้และเอกสารสำหรับนักพัฒนามีอยู่ที่ Read the Docs
FontTools ต้องใช้ Python 3.8 หรือใหม่กว่า เราพยายามปฏิบัติตามกำหนดการเดียวกันกับการสนับสนุนเวอร์ชัน Python ขั้นต่ำเหมือนกับ NumPy (ดู NEP 29)
แพ็คเกจแสดงอยู่ใน Python Package Index (PyPI) ดังนั้นคุณจึงสามารถติดตั้งได้ด้วย pip:
pip install fonttools
หากคุณต้องการมีส่วนร่วมในการพัฒนา คุณสามารถโคลนพื้นที่เก็บข้อมูลจาก GitHub ติดตั้งแพ็คเกจในโหมด 'แก้ไขได้' และแก้ไขซอร์สโค้ดที่มีอยู่ เราขอแนะนำให้สร้างสภาพแวดล้อมเสมือนโดยใช้โมดูล virtualenv หรือ Python 3 venv
# download the source code to 'fonttools' folder
git clone https://github.com/fonttools/fonttools.git
cd fonttools
# create new virtual environment called e.g. 'fonttools-venv', or anything you like
python -m virtualenv fonttools-venv
# source the `activate` shell script to enter the environment (Unix-like); to exit, just type `deactivate`
. fonttools-venv/bin/activate
# to activate the virtual environment in Windows `cmd.exe`, do
fonttools-venv S cripts a ctivate.bat
# install in 'editable' mode
pip install -e .
ปัจจุบันแพ็คเกจ fontTools
ไม่มีการพึ่งพาภายนอก (จำเป็น) นอกเหนือจากโมดูลที่รวมอยู่ใน Python Standard Library อย่างไรก็ตาม บางโมดูลจำเป็นต้องมีการพึ่งพาเพิ่มเติมบางประการ ซึ่งจำเป็นสำหรับการปลดล็อคคุณสมบัติเสริม การแจกแจง fonttools
PyPI ยังรองรับสิ่งที่เรียกว่า "พิเศษ" เช่น ชุดคีย์เวิร์ดที่อธิบายกลุ่มของการขึ้นต่อกันเพิ่มเติม ซึ่งสามารถใช้ได้เมื่อติดตั้งผ่าน pip หรือเมื่อระบุข้อกำหนด ตัวอย่างเช่น:
pip install fonttools[ufo,lxml,woff,unicode]
คำสั่งนี้จะติดตั้งเครื่องมือฟอนต์ เช่นเดียวกับการขึ้นต่อกันที่จำเป็นเพื่อปลดล็อคคุณสมบัติพิเศษที่ชื่อว่า "ufo" ฯลฯ
Lib/fontTools/misc/etree.py
โมดูลจะส่งออก API ที่คล้ายกับ ElementTree สำหรับการอ่าน/เขียนไฟล์ XML และอนุญาตให้ใช้เป็นแบ็คเอนด์ทั้งโมดูล xml.etree
ในตัวหรือ lxml อย่างหลังมักนิยมใช้ทุกครั้งที่มี เนื่องจากโดยทั่วไปแล้วจะเร็วกว่าและปลอดภัยกว่า
พิเศษ: lxml
Lib/fontTools/ufoLib
แพ็คเกจสำหรับอ่านและเขียนไฟล์ต้นฉบับยูเอฟโอ มันต้องการ:
pyfilesystem2
) เลเยอร์นามธรรมของระบบไฟล์enum
ในตัว (จำเป็นสำหรับ Python <3.4 เท่านั้น) พิเศษ: ufo
Lib/fontTools/ttLib/woff2.py
โมดูลสำหรับบีบอัด/ขยายแบบอักษรเว็บ WOFF 2.0; มันต้องการ:
พิเศษ: woff
Lib/fontTools/ttLib/sfnt.py
เพื่อบีบอัดฟอนต์เว็บ WOFF 1.0 ได้ดีขึ้น คุณสามารถใช้โมดูลต่อไปนี้แทนไลบรารี zlib
ในตัว:
พิเศษ: woff
Lib/fontTools/unicode.py
ในการแสดงชื่ออักขระ Unicode เมื่อทิ้งตาราง cmap
ด้วย ttx
เราใช้โมดูล unicodedata
ในไลบรารีมาตรฐาน เวอร์ชันที่รวมอยู่ในนั้นจะแตกต่างกันไปตามเวอร์ชัน Python ที่แตกต่างกัน หากต้องการใช้ข้อมูลล่าสุดที่มี คุณสามารถติดตั้ง:
unicodedata
backport สำหรับ Python 3.x อัปเดตเป็น Unicode เวอร์ชัน 15.0 ล่าสุด พิเศษ: unicode
Lib/fontTools/varLib/interpolatable.py
โมดูลสำหรับค้นหาลำดับรูปร่าง/ส่วนประกอบที่ไม่ถูกต้องระหว่างต้นแบบที่ต่างกัน ต้องใช้แพ็คเกจใดแพ็คเกจหนึ่งต่อไปนี้เพื่อแก้ปัญหาที่เรียกว่า "ปัญหาการจับคู่น้ำหนักที่สมบูรณ์แบบขั้นต่ำในกราฟสองฝ่าย" หรือปัญหาการมอบหมาย:
หากต้องการพล็อตผลลัพธ์เป็นรูปแบบ PDF หรือ HTML คุณต้องติดตั้ง:
พิเศษ: interpolatable
Lib/fontTools/varLib/plot.py
โมดูลสำหรับการแสดงภาพ DesignSpaceDocument และผลลัพธ์ VariationModel
พิเศษ: plot
Lib/fontTools/misc/symfont.py
โมดูลขั้นสูงสำหรับการวิเคราะห์สถิติแบบอักษรสัญลักษณ์ มันต้องการ:
พิเศษ: symfont
Lib/fontTools/t1Lib.py
หากต้องการรับผู้สร้างไฟล์และประเภทของแบบอักษร Macintosh PostScript Type 1 บน Python 3 คุณต้องติดตั้งโมดูลต่อไปนี้ เนื่องจากโมดูล MacOS
เก่าไม่รวมอยู่ใน Mac Python อีกต่อไป:
พิเศษ: type1
Lib/fontTools/ttLib/removeOverlaps.py
ลดความซับซ้อนของสัญลักษณ์ TrueType โดยการผสานรูปทรงและส่วนประกอบที่ทับซ้อนกัน
พิเศษ: pathops
Lib/fontTools/pens/cocoaPen.py
และ Lib/fontTools/pens/quartzPen.py
ปากกาสำหรับวาดร่ายมนตร์ด้วย Cocoa NSBezierPath
หรือ CGPath
ต้องการ:
Lib/fontTools/pens/qtPen.py
ปากกาสำหรับวาดร่ายมนตร์ด้วย QPainterPath
ของ Qt ต้องการ:
Lib/fontTools/pens/reportLabPen.py
ปากกาสำหรับวาดภาพร่ายมนตร์เป็นภาพ PNG ต้องใช้:
Lib/fontTools/pens/freetypePen.py
ปากกาสำหรับวาดร่ายมนตร์ด้วย FreeType เป็นภาพแรสเตอร์ ต้องใช้:
Lib/fontTools/ttLib/tables/otBase.py
ใช้ไลบรารี Harfbuzz เพื่อทำให้ GPOS/GSUB เป็นอนุกรมโดยใช้วิธี hb_repack
ต้องใช้:
พิเศษ: repacker
NEWS.rst
ด้วยการเปลี่ยนแปลงทั้งหมดตั้งแต่รุ่นล่าสุด เขียนบันทึกการเปลี่ยนแปลงสำหรับ PR แต่ละรายการ โดยมีประโยคสั้นๆ หนึ่งหรือสองประโยคในการสรุป รวมถึงลิงก์ไปยัง PR และประเด็นที่เกี่ยวข้องที่ PR ระบุ อย่าใส่ชื่อใหม่ คำสั่งถัดไปจะทำเพื่อคุณpip install -r dev-requirements.txt
จากนั้นรันคำสั่ง python setup.py release
จากส่วนปลายของสาขา main
ตามค่าเริ่มต้น การชนจะเลื่อนไปที่หลักที่สามหรือ 'แพทช์' เท่านั้น เว้นแต่คุณจะผ่าน --major
หรือ --minor
เพื่อชนหลักแรกหรือหลักที่สองตามลำดับ สิ่งนี้จะกระแทกสตริงเวอร์ชันแพ็คเกจ แยกการเปลี่ยนแปลงตั้งแต่เวอร์ชันล่าสุดจาก NEWS.rst
และใช้ข้อความนั้นเพื่อสร้างแท็ก git ที่มีคำอธิบายประกอบ (หรือแท็ก git ที่ลงนามแล้ว หากคุณผ่านตัวเลือก --sign
และบัญชี git และ Github ของคุณคือ กำหนดค่าสำหรับการลงนามคอมมิตโดยใช้คีย์ GPG) นอกจากนี้ยังเพิ่มเวอร์ชันเพิ่มเติมซึ่งจะเปิดสาขาหลักสำหรับรอบการพัฒนาที่ตามมาgit push --follow-tags
หมายเหตุ: อาจพุชแท็กท้องถิ่นอื่นๆ ด้วยเช่นกัน โปรดใช้ความระมัดระวังตามลำดับตัวอักษร:
แอสชมิทซ์, โอลิเวียร์ เบอร์เทน, ซัมยัค ภูตา, เอริค ฟาน บล็อคแลนด์, ปีเตอร์ ฟาน บล็อคแลนด์, เจลเล่ บอสมา, ซาสชา บราวเออร์, ทอม บายเรอร์, อันโตนิโอ คาเวโดนี, เฟรเดริก คูฟเฟียร์, วินเซนต์ คอนแนร์, เดวิด คอร์เบตต์, ไซมอน โคเซนส์, เดฟ ครอสแลนด์, ไซมอน แดเนียลส์, ปีเตอร์ เดกเกอร์ส, เบห์แดด เอสฟาห์โบด, เบห์นัม เอสฟาห์โบด, ฮันเนส ฟามิรา, แซม ฟิชแมน, แมตต์ ฟอนเทน, ทาคาอากิ ฟูจิ, ร็อบ ฮาเกแมนส์, ยานนิส ฮาราลัมบัส, เกร็ก ฮิตช์ค็อก, เจเรมี ฮอร์นัส, คาเลด ฮอสนี่, จอห์น ฮัดสัน, เดนิส โมโยโก แจ็กเกอรี, แจ็ค แจนเซน, ทอม แคควินสกี้, เจนส์ คูติเลค, แอนทอน เลคา, แวร์เนอร์ เลมเบิร์ก, ทาล เลมิง , ปีเตอร์ ลอฟติ้ง, คอสซิโม ลูโป, โอลลี่ ไมเออร์, มาซายา นากามูระ, เดฟ ออปสตัด, ลอเรนซ์ เพนนีย์, รูซเบห์ ปูร์นาเดอร์, การ์เร็ต รีเกอร์, รีด โรเบิร์ตส์, โคลิน โรฟล์ส, กุยโด ฟาน รอสซัม, จัสต์ ฟาน รอสซัม, อันเดรียส ไซเดล, จอร์จ ไซเฟิร์ต, คริส ซิมป์กินส์, มิเกล โซซา, อดัม ทวาร์ดอช, เอเดรียน เททาร์, วิทาลี โวลคอฟ, พอล ฉลาด.
ลิขสิทธิ์ (c) 2000 BeOpen.com สงวนลิขสิทธิ์.
ลิขสิทธิ์ (c) 1995-2001 Corporation for National Research Initiatives สงวนลิขสิทธิ์.
ลิขสิทธิ์ (c) 1991-1995 Stichting Mathematisch Centrum, อัมสเตอร์ดัม สงวนลิขสิทธิ์.
มีความสุข!