เพื่อให้แสดงผลฟอนต์แบบกำหนดเองใน Collabora Online CODE ที่ทำงานใน Docker ให้เก็บไฟล์ฟอนต์ไว้บนเครื่องโฮสต์ และทำการเมานต์ไดเร็กทอรีเดียวกันนั้นเข้าไปในทั้งไดเร็กทอรีฟอนต์ของระบบในคอนเทนเนอร์และ systemplate ของเอกสาร systemplate จะจัดหาไฟล์ให้กับกระบวนการเอกสารที่แยกต่างหาก การเมานต์ฟอนต์เข้าไปเฉพาะใน systemplate เท่านั้น/usr/share/fontsจะทำให้ตระกูลฟอนต์ปรากฏในเมนูฟอนต์ได้โดยไม่ต้องแสดงผลในเอกสาร คู่มือนี้ใช้ Docker Compose และเส้นทางอิมเมจ CODE ปัจจุบัน/opt/cool/systemplateโปรดตรวจสอบเส้นทางหากคุณใช้ image line อื่น
เก็บไฟล์ฟอนต์ที่ได้รับอนุญาตไว้ด้วยกันในไดเร็กทอรีโฮสต์ที่ Docker สามารถอ่านได้
เลือกแหล่งฟอนต์ที่คุณสามารถดูแลรักษาได้
การเมานต์แบบอ่านอย่างเดียว (read-only bind mount) มักเป็นตัวเลือกที่ง่ายที่สุดสำหรับโฮสต์ Docker เพียงเครื่องเดียว วิธีนี้จะช่วยรักษาไฟล์ฟอนต์ไว้เมื่อคอนเทนเนอร์ CODE ถูกสร้างขึ้นใหม่หรืออัปเกรด และคุณสามารถตรวจสอบได้อย่างแม่นยำว่าคอนเทนเนอร์สามารถอ่านไฟล์ใดได้บ้าง ควรใช้ไฟล์ฟอนต์ที่คุณได้รับอนุญาตให้ติดตั้งและแจกจ่ายไปยังเซิร์ฟเวอร์ อย่าคัดลอกไดเร็กทอรีฟอนต์ของระบบเดสก์ท็อปทั้งหมด เว้นแต่คุณได้ตรวจสอบใบอนุญาตแล้วและจำเป็นต้องใช้ไฟล์เหล่านั้น
ใช้ไฟล์ฟอนต์ที่ไม่บีบอัดในรูปแบบที่สภาพแวดล้อมของคุณรองรับ โดยทั่วไปคือ TrueType ( .ttf) หรือ OpenType ( .otf) รวมสไตล์ที่เอกสารของคุณต้องการ เช่น ปกติ ตัวหนา ตัวเอียง และตัวหนาเอียง ตั้งชื่อตระกูลฟอนต์และชื่อไฟล์ให้ชัดเจน และตรวจสอบให้แน่ใจว่าผู้ใช้ที่ดูแลคอนเทนเนอร์สามารถอ่านทุกไดเร็กทอรีและไฟล์ได้ ฟอนต์ที่มีเพียงสไตล์เดียวอาจทำให้ Collabora แทนที่ด้วยฟอนต์อื่นเมื่อเอกสารต้องการตัวหนาหรือตัวเอียง
ขั้นแรก ให้สร้างไดเร็กทอรีโฮสต์เฉพาะ แล้วคัดลอกไฟล์ที่ได้รับอนุญาตเข้าไปในไดเร็กทอรีนั้น:
sudo mkdir -p /srv/collabora/fonts
sudo cp BrandSans-Regular.ttf BrandSans-Bold.ttf /srv/collabora/fonts/
sudo chmod -R a+rX /srv/collabora/fonts
แทนที่ชื่อไฟล์ตัวอย่างด้วยไฟล์ฟอนต์จริงของคุณ สิทธิ์ในการอ่านมีความสำคัญเนื่องจากกระบวนการ CODE ทำงานโดยใช้บัญชีที่ไม่ได้รับสิทธิ์พิเศษในอิมเมจปัจจุบัน รักษาเส้นทางไดเร็กทอรีให้คงที่ เนื่องจาก bind mount ของ Compose จะอ้างอิงถึงเส้นทางนั้น
ติดตั้งฟอนต์ลงในทั้งโครงสร้างฟอนต์ของโฮสต์และแผ่นระบบ
ในcollaboraบริการ ที่มีอยู่ของคุณ docker-compose.ymlให้เพิ่มรายการวอลุ่มเหล่านี้ลงไป รักษาอิมเมจ พอร์ต รายชื่อโดเมนที่อนุญาต การตั้งค่า SSL ข้อมูลลับ และนโยบายการรีสตาร์ทที่มีอยู่ของคุณไว้ ตัวอย่างด้านล่างแสดงเฉพาะการเชื่อมต่อฟอนต์เท่านั้น
เพิ่มการเชื่อมต่อแบบอ่านอย่างเดียวทั้งสองรายการไว้ในส่วนวอลุ่มของบริการ CODE ที่มีอยู่แล้ว
services:
collabora:
volumes:
- /srv/collabora/fonts:/usr/share/fonts/truetype/more:ro
- /srv/collabora/fonts:/opt/cool/systemplate/usr/share/fonts/truetype/more:ro
เป้าหมายแรกทำให้ฟอนต์พร้อมใช้งานสำหรับการค้นหาฟอนต์ปกติของคอนเทนเนอร์ เป้าหมายที่สองจะวางฟอนต์เหล่านั้นไว้ภายในเทมเพลตที่ใช้ในการเตรียมสภาพแวดล้อมเอกสารแบบแยกส่วน คู่มือ SDK ของ Collabora ได้บันทึกรูปแบบวอลุ่มสองตำแหน่งนี้สำหรับ Docker ไว้แล้ว ห้ามทำการเมานต์ทับไดเร็กทอรีทั้งหมด/usr/share/fontsหรือไดเร็กทอรี systemplate เพราะอาจซ่อนฟอนต์ที่จัดเตรียมไว้แล้วในอิมเมจได้
เส้นทางของเทมเพลตระบบนั้นขึ้นอยู่กับเวอร์ชัน ข้อมูลเมตาของอิมเมจ CODE 26.04 ปัจจุบันระบุ/opt/cool/systemplateเส้นทางเทมเพลตระบบไว้ที่ตำแหน่งนั้น และเอกสารปัจจุบันของ Collabora ก็ใช้ตำแหน่งนั้น หากคุณใช้อิมเมจเวอร์ชันเก่ากว่าหรือเวอร์ชันเฉพาะของผู้จำหน่าย โปรดตรวจสอบเอกสารหรือการกำหนดค่าเริ่มต้นของอิมเมจนั้นก่อนที่จะแก้ไขเส้นทางเป้าหมาย
สร้างคอนเทนเนอร์ขึ้นใหม่และยืนยันการค้นหาฟอนต์
หลังจากบันทึกไฟล์ Compose และวางไฟล์ฟอนต์ไว้บนโฮสต์แล้ว ให้สร้างบริการ CODE ขึ้นใหม่เพื่อให้ Docker ใช้การเชื่อมต่อแบบ bind mount:
สร้างบริการขึ้นใหม่ จากนั้นใช้คำสั่ง fc-list เพื่อตรวจสอบว่า Fontconfig ตรวจพบตระกูลฟอนต์หรือไม่
docker compose up -d --force-recreate collabora
docker compose exec -T collabora fc-list
ในผลลัพธ์ ให้มองหาชื่อตระกูลฟอนต์หรือพาธไฟล์ที่ติดตั้งไว้ หากต้องการจำกัดรายการให้แคบลง ให้ส่งผลลัพธ์ผ่านไปgrepยังชื่อตระกูลที่ฟอนต์รายงานไว้ ตัวอย่างเช่น:
docker compose exec -T collabora fc-list | grep -i "Brand Sans"
หากคำสั่งรายงานว่าไม่พบการจับคู่ ให้ตรวจสอบพาธโฮสต์ สิทธิ์การเข้าถึงไฟล์ การเยื้องการเมานต์ และบันทึกของคอนเทนเนอร์ คุณสามารถตรวจสอบการเมานต์ที่มีผลในdocker inspectคอนเทนเนอร์ที่กำลังทำงานอยู่ หรือใช้docker compose configเพื่อตรวจจับข้อผิดพลาดในการเยื้อง YAML docker compose downโดยปกติแล้วไม่จำเป็นต้องเรียกใช้คำสั่งเพื่อใช้การเปลี่ยนแปลงวอลุ่ม การสร้างบริการใหม่ก็เพียงพอแล้ว
ตรวจสอบว่าแบบอักษรแสดงผลได้อย่างถูกต้องในเอกสารจริง
ตรวจสอบทั้งตัวเลือกแบบอักษรและข้อความที่แสดงในเอกสารหลังจากเปิดเอกสารอีกครั้ง
เปิดเอกสารทดสอบผ่านการผสานรวม Nextcloud หรือ WOPI ตามปกติ เลือกข้อความตัวอย่างสั้นๆ และเลือกตระกูลฟอนต์แบบกำหนดเองจากตัวเลือกฟอนต์ พิมพ์บรรทัดใหม่ด้วยฟอนต์นั้น บันทึก ปิด และเปิดไฟล์อีกครั้ง ตรวจสอบข้อความปกติและตัวหนา และเปรียบเทียบการขึ้นบรรทัดใหม่หรือเค้าโครงหน้ากับเอกสารต้นฉบับ การที่ตระกูลฟอนต์ปรากฏในเมนูเป็นการตรวจสอบเบื้องต้นเท่านั้น ข้อความที่ปรากฏหลังจากเปิดไฟล์อีกครั้งคือการตรวจสอบการแสดงผลที่มีประโยชน์
- ฟอนต์ปรากฏในเมนู แต่ข้อความหายไปหรือแสดงผลผิดเพี้ยน:ตรวจสอบให้แน่ใจว่าการเมานต์ครั้งที่สองกำหนดเป้าหมายไปยังไดเร็กทอรีฟอนต์ของแผ่นระบบ และมีไฟล์เดียวกันอยู่ภายใน
- ไม่พบฟอนต์ในเมนู:โปรดตรวจสอบว่าไฟล์ถูกต้องและอ่านได้ จากนั้นตรวจสอบ
fc-listผลลัพธ์และบันทึกการเริ่มต้นคอนเทนเนอร์
- ฟอนต์จะใช้งานได้จนกว่าจะมีการอัปเดตภาพ:ตรวจสอบให้แน่ใจว่าทั้งสองการเชื่อมต่อยังคงอยู่ใน Compose และไดเร็กทอรีโฮสต์ของคุณไม่ได้อยู่ภายในเส้นทางคอนเทนเนอร์ชั่วคราว
- แสดงผลเพียงบางตัวอักษรเท่านั้น:ฟอนต์ที่เลือกอาจไม่มีตัวอักษรเหล่านั้น โปรดเพิ่มฟอนต์ที่มีตัวอักษรที่ต้องการ หรือใช้ฟอนต์สำรองที่เหมาะสม
การผูกการเชื่อมต่อ (bind mount) ช่วยให้ฟอนต์เป็นอิสระจากอิมเมจ CODE แต่ไม่รับประกันว่าเค้าโครงจะเหมือนกันในทุกไคลเอ็นต์หรือในทุกเอกสาร การแทนที่ฟอนต์ ตัวอักษรที่หายไป เวอร์ชันฟอนต์ที่แตกต่างกัน และการจัดรูปแบบเฉพาะเอกสารยังคงสามารถเปลี่ยนแปลงการขึ้นบรรทัดใหม่ได้ สำหรับรายละเอียดการกำหนดค่าเพิ่มเติม โปรดดูเอกสารการติดตั้งฟอนต์ ของ Collabora คู่มืออิมเมจ Dockerของ CODE และคู่มือ Collabora Online SDKควรตรวจสอบตัวอย่าง Docker ในคู่มือและเอกสารประกอบอิมเมจปัจจุบันอีกครั้งเมื่อคุณเปลี่ยนเวอร์ชัน CODE