ตำแหน่งของฟอนต์ truetype


19

ฉันต้องการสร้างสคริปต์ขนาดเล็กที่ติดตั้งฟอนต์ True truetype สองสามตัวในระบบของผู้ใช้ บนเครื่องอูบุนตูของฉันแบบอักษร TrueType /usr/share/fonts/truetypeจะอยู่ที่ อย่างไรก็ตามฉันไม่แน่ใจว่าตำแหน่งนี้เหมือนกันในทุกเครื่องหรือไม่ มีวิธีที่จะทราบว่าแบบอักษร truetypes ถูกเก็บไว้ในระบบ Linux หรือไม่?

ปรับปรุง
หลังจากการวิจัยบางอย่างที่ฉันพบว่าเส้นทางที่ระบุไว้ในไฟล์usr/share/fonts/truetype XML /etc/fonts/fonts.confมันเป็นไฟล์ XML ดังนั้นฉันสามารถใช้ XPath เพื่อรับ dir:

xpath -q -e 'fontconfig/dir[1]/text()[1]' /etc/fonts/fonts.conf

ฉันไม่รู้ว่าไฟล์นี้จะมีอยู่ในระบบ Linux (หรือส่วนใหญ่) ทั้งหมดหรือไม่


ดูเพิ่มเติมที่fc-cache(1)man pageซึ่งช่วยให้คุณเพิ่มแบบอักษรใหม่ให้กับระบบ
jww

คำตอบ:


20

แบบอักษรทุกตัวที่อยู่ภายใต้ไดเรกทอรีย่อยใด ๆ/usr/share/fontsและ~/.fontsถูกสแกนและเพิ่มไปยังคอลเลกชันที่คุณสามารถใช้ได้ ดังนั้นตราบใดที่ฟอนต์ของคุณอยู่ในหนึ่งในสองไดเรกทอรีนั้นมันจะอยู่ในตำแหน่งที่ถูกต้องตำแหน่งนั้นจะเหมือนกันสำหรับลินุกซ์หลัก ๆ เกือบทุกตัว

ปรับปรุง:

โดยวิธีที่ฉันสามารถยืนยันว่าfonts.confไฟล์นั้นมีอยู่ในทั้ง Fedora และ Ubuntu (และผลงานของพวกเขา: Xubuntu, Lubuntu, Linux Mint, Cinnammon, Peppermint OS, Fedora และสปินทั้งหมด)


1
จากนั้นทำไมฉันถึงมีแบบอักษรFirefoxและgnome-font-viewerไม่มีอยู่ในตำแหน่งที่ตั้งเหล่านั้น ( /usr/share/fontsและ~/.fonts) ฉันใช้ Fedora 28
นักบัญชีم

คุณอาจต้องการตรวจสอบFONTCONFIG_PATHก่อน FONTCONFIG_PATHถูกใช้เพื่อแทนที่ไดเรกทอรีการกำหนดค่าเริ่มต้น
jww

4

ใน Fedora เส้นทางของโฟลเดอร์คือ /home/{user}/.local/share/fonts

คุณสามารถคัดลอก / วางฟอนต์ไฟล์ได้ที่นี่


1

การแจกแจงทั้งหมดคือความแตกต่างคุณควรกำหนดเส้นทางเริ่มต้นและให้ผู้ใช้เลือกระหว่างค่าเริ่มต้นและแบบกำหนดเอง

แก้ไข:

ในความคิดของฉันคุณมีสามโซลูชั่นเพราะไม่มีตัวแปรสภาพแวดล้อมหรือฟังก์ชั่นสำหรับที่

  1. กำหนดเส้นทางเริ่มต้นและให้ผู้ใช้เลือกระหว่างค่าเริ่มต้นและเส้นทางที่กำหนดเอง
  2. ดังที่ dtrosset กล่าวว่าคุณสามารถสร้างแพ็คเกจด้วยแบบอักษรของคุณสำหรับการแจกแจงที่แตกต่างกัน
  3. คุณสามารถใช้ if / elif / else และ test -e เพื่อพิจารณาว่ามีฟอนต์เซิร์ฟเวอร์ที่แตกต่างกันอยู่หรือไม่ หากไม่มีอยู่แสดงเส้นทางเริ่มต้นและให้ผู้ใช้เลือกระหว่างมันและเส้นทางที่กำหนดเอง

Ex:

DEFAULT="$home/.fonts/"
UBUNTU_XFSTT="/usr/share/fonts/truetype/"
RHL52_XFS="/usr/X11R6/lib/X11/fonts/ttfonts/"
RHL6_XFSTT="/usr/X11R6/lib/X11/fonts/"
DEBIAN_XFSTT="/usr/share/fonts/truetype/"

#Test if directory exist
if test -e ${UBUNTU_XFSTT} ; then
    echo ${UBUNTU_XFSTT}
elif test -e ${RHL52_XFS} ; then
    echo ${RHL52_XFS}
elif test -e ${RHL6_XFSTT} ; then
    echo ${RHL6_XFSTT}
elif test -e ${DEBIAN_XFSTT} ; then
    echo ${DEBIAN_XFSTT}
else
    echo ${DEFAULT}
fi

PS นั่นเป็นเพียงความเห็นของฉัน ...


-1 แฮ็ค นี่ไม่ใช่วิธีการแก้ปัญหาและมันจะทำให้เกิดความฉิบหายสำหรับนักพัฒนา StackedCrooked ในกรณีนี้เนื่องจากเราไม่สามารถพึ่งพาผู้ใช้แต่ละคนที่รู้ว่าไฟล์ ttf ของพวกเขาอยู่ที่ไหน หากแม้แต่ผู้พัฒนายังไม่รู้ว่าไฟล์อยู่ที่ไหนเราควรคาดหวังให้ผู้ใช้รู้ได้อย่างไร
Nitrodist

คุณอาจต้องการตรวจสอบFONTCONFIG_PATHก่อน FONTCONFIG_PATHถูกใช้เพื่อแทนที่ไดเรกทอรีการกำหนดค่าเริ่มต้น
jww

0

บางทีคุณอาจลองสร้างแพ็คเกจด้วยแบบอักษรของคุณ มันเป็นการทำงานเล็กน้อยในการสร้างไฟล์รายละเอียดแพ็คเกจและกฎการสร้าง แต่คุณจะสามารถอัปเดตและถอนการติดตั้งได้ฟรี สำหรับ Ubuntu คุณควรสร้างไฟล์. deb

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.