ในการเพิ่มฟอนต์แบบกำหนดเองลงใน ONLYOFFICE Document Server ให้วางไฟล์ฟอนต์ที่ได้รับอนุญาตไว้ในไดเร็กทอรีที่เซิร์ฟเวอร์สามารถเข้าถึงได้ แล้วเรียกใช้คำสั่ง `npm install` /usr/bin/documentserver-generate-allfonts.shสำหรับการใช้งาน Docker นั้น โดยทั่วไปแล้วการใช้ไดเร็กทอรีฟอนต์แบบ bind-mounted จะดีกว่าการคัดลอกไฟล์เข้าไปในคอนเทนเนอร์ที่กำลังทำงานอยู่ เนื่องจากไฟล์เหล่านั้นจะยังคงอยู่แม้หลังจากการสร้างคอนเทนเนอร์ใหม่
วิธีการติดตั้งที่เหมาะสมนั้นขึ้นอยู่กับว่า ONLYOFFICE Docs ทำงานอยู่ที่ใด คุณทำการติดตั้งใหม่บ่อยแค่ไหน และคุณยอมรับได้หรือไม่ที่จะเกิดการหยุดชะงักของบริการชั่วคราวในขณะที่แคตตาล็อกฟอนต์กำลังได้รับการอัปเดต
เมนูแบบเลื่อนลงสำหรับแบบอักษรในโปรแกรมแก้ไขจะแสดงรายการตระกูลแบบอักษรที่มีให้เลือก แบบอักษรที่หายไปอาจถูกแทนที่ด้วยแบบอักษรอื่นชั่วคราว จนกว่าแคตตาล็อกแบบอักษรของเซิร์ฟเวอร์จะได้รับการอัปเดต
เลือกวิธีการติดตั้งฟอนต์
| วิธีการ | เหมาะสมที่สุด | การแลกเปลี่ยน |
| Docker bind mount | คอนเทนเนอร์สำหรับใช้งานจริงที่จัดการด้วย Docker Compose | จำเป็นต้องแก้ไขการกำหนดค่าคอนเทนเนอร์ และอาจต้องสร้างใหม่ |
docker cpเข้าไปในคอนเทนเนอร์ที่กำลังทำงานอยู่ | การทดสอบอย่างรวดเร็วหรือการเพิ่มเติมชั่วคราว | ไฟล์อาจหายไปเมื่อมีการเปลี่ยนคอนเทนเนอร์นั้น |
| ติดตั้งฟอนต์บนโฮสต์ Linux ที่ใช้งานแพ็คเกจ Document Server ดั้งเดิม | การติดตั้งแบบ DEB/RPM โดยไม่ต้องใช้ Docker | ต้องมีการจัดการในระดับเซิร์ฟเวอร์และยังคงผูกติดอยู่กับโฮสต์นั้น |
เอกสารคำแนะนำเกี่ยวกับฟอนต์อย่างเป็นทางการของ Dockerอธิบายวิธีการคัดลอกไฟล์และสร้างรายการฟอนต์ใหม่เอกสารอ้างอิง bind mount ของ Docker อธิบายว่าเหตุใดการ mount โฟลเดอร์โฮสต์เฉพาะจึงทำให้ไฟล์พร้อมใช้งานเมื่อมีการแทนที่คอนเทนเนอร์ สิ่งเหล่านี้เป็นทางเลือกในการปรับใช้ที่แตกต่างกัน ไม่ใช่รูปแบบฟอนต์ที่แตกต่างกัน
เตรียมไฟล์ฟอนต์และยืนยันเซิร์ฟเวอร์เป้าหมาย
1. ระบุการใช้งาน ONLYOFFICE ที่ใช้งานอยู่
เรียกใช้docker psบนโฮสต์ Docker หากโปรแกรมแก้ไขทำงานในคอนเทนเนอร์ ค้นหาชื่อคอนเทนเนอร์ Document Server ในNAMESคอลัมน์ ตัวอย่างด้านล่างใช้onlyoffice-documentserver. แทนที่ค่าดังกล่าวหากของคุณแตกต่างกัน การผสานรวม Nextcloud หรือ ownCloud โดยปกติจะไม่เปลี่ยนแปลงข้อเท็จจริงที่ว่าต้องติดตั้งฟอนต์บนเซิร์ฟเวอร์ ONLYOFFICE Docs ไม่ใช่เฉพาะบนเซิร์ฟเวอร์จัดเก็บข้อมูลหรือคอมพิวเตอร์ที่ดูเอกสารเท่านั้น
docker ps
ค้นหาคอนเทนเนอร์ Document Server ในรายการ Docker ก่อนที่จะคัดลอกฟอนต์หรือสร้างแคตตาล็อกใหม่
2. รวบรวมไฟล์ฟอนต์ที่ได้รับอนุญาต
เลือกชุดฟอนต์ที่สมบูรณ์และได้รับอนุญาตอย่างถูกต้อง รวมถึงน้ำหนักและรูปแบบที่เอกสารของคุณใช้งานจริง ONLYOFFICE แสดงรายการรูปแบบ TrueType และ OpenType เช่น.ttfและ.otfรวมถึงนามสกุลฟอนต์อื่นๆ ที่รองรับ ในเอกสารประกอบฟอนต์สำหรับ Linuxเพื่อการใช้งานครั้งแรกที่คาดการณ์ได้ ให้ใช้ไฟล์ TTF หรือ OTF ทั่วไป และตรวจสอบการใช้งานเซิร์ฟเวอร์และไคลเอ็นต์ที่ได้รับอนุญาตในใบอนุญาตฟอนต์
สำหรับตัวอย่างการใช้งาน Docker ให้เตรียมไฟล์ไว้/srv/onlyoffice/custom-fontsในโฮสต์ Docker ตัวอย่างชื่อไฟล์Inter-Regular.ttfเป็นInter-Bold.ttfเพียงตัวอย่างเท่านั้น โปรดใช้ไฟล์ที่คุณมีสิทธิ์ในการติดตั้ง
sudo mkdir -p /srv/onlyoffice/custom-fonts
sudo cp Inter-Regular.ttf Inter-Bold.ttf /srv/onlyoffice/custom-fonts/
sudo chmod 644 /srv/onlyoffice/custom-fonts/*.ttf
เรียกใช้คำสั่งเหล่านี้จากไดเร็กทอรีที่มีไฟล์ฟอนต์ ตรวจสอบเนื้อหาของโฟลเดอร์ก่อนดำเนินการต่อ ในระบบที่มีการจัดการ ให้ปรับความเป็นเจ้าของและสิทธิ์การเข้าถึงให้สอดคล้องกับนโยบายความปลอดภัยของคุณ แทนที่จะอนุญาตให้ทุกคนเขียนลงในโฟลเดอร์ได้
เก็บไฟล์ฟอนต์ทุกแบบไว้ในไดเร็กทอรีเฉพาะ เพื่อให้สามารถติดตั้งลงในคอนเทนเนอร์ของเซิร์ฟเวอร์เอกสารได้
คำแนะนำสำหรับ Docker: ติดตั้งไดเร็กทอรีฟอนต์อย่างถาวร
3. เพิ่มการเชื่อมต่อแบบ bind mount เข้ากับบริการ Compose ที่มีอยู่เดิม
ในไฟล์ Compose ปัจจุบัน ให้ค้นหาบริการที่รันอิมเมจ ONLYOFFICE Document Server เพิ่มรายการต่อไปนี้ลงในvolumesรายการที่มีอยู่แล้ว โดยคงค่าไดรฟ์ พอร์ต ข้อมูลรับรอง และตัวแปรสภาพแวดล้อมอื่นๆ ที่กำหนดค่าไว้แล้ว:
services:
onlyoffice-documentserver:
volumes:
- /srv/onlyoffice/custom-fonts:/usr/share/fonts/truetype/custom:ro
เส้นทางต้นทางอยู่บนโฮสต์ Docker ส่วนปลายทางอยู่ภายในคอนเทนเนอร์:roคำต่อท้ายจำกัดการเขียนคอนเทนเนอร์ไปยังไดเร็กทอรีฟอนต์ ควรทำการเมานต์ไดเร็กทอรีcustomเฉพาะแทนการแทนที่ทั้ง/usr/share/fontsโครงสร้าง ซึ่งอาจซ่อนฟอนต์ที่มาพร้อมกับอิมเมจได้ ไฟล์Dockerfile อย่างเป็นทางการของ ONLYOFFICEประกาศไดเร็กทอรีฟอนต์ TrueType แบบกำหนดเองเป็นวอลุ่มในอิมเมจเวอร์ชัน Community และ Enterprise
ตรวจสอบการตั้งค่า Compose ที่แก้ไขแล้ว จากนั้นใช้การตั้งค่าdocker compose up -dจากไดเร็กทอรีของโปรเจ็กต์ การดำเนินการนี้อาจสร้างบริการขึ้นใหม่: กำหนดเวลาการเปลี่ยนแปลงเมื่อบรรณาธิการสามารถปิดเอกสารได้อย่างปลอดภัย หากคุณใช้docker runการปรับใช้แบบธรรมดา ให้เพิ่มอาร์กิวเมนต์แบบอ่านอย่างเดียวที่เทียบเท่ากัน--mount type=bind,src=/srv/onlyoffice/custom-fonts,dst=/usr/share/fonts/truetype/custom,readonlyเมื่อสร้างคอนเทนเนอร์ขึ้นใหม่
การสร้างรายการไดรฟ์แบบอ่านอย่างเดียวโดยเฉพาะจะช่วยแยกไฟล์ฟอนต์แบบกำหนดเองออกจากอิมเมจคอนเทนเนอร์
4. ตรวจสอบว่าคอนเทนเนอร์สามารถมองเห็นไฟล์ฟอนต์ได้หรือไม่
หลังจากที่บริการทำงานแล้ว ให้ตรวจสอบไดเร็กทอรีที่เชื่อมต่อ และหากมี ให้ตรวจสอบรายการ fontconfig ด้วย ชื่อตระกูลที่รายงานโดย fontconfig อาจแตกต่างจากชื่อไฟล์
docker exec onlyoffice-documentserver ls -l /usr/share/fonts/truetype/custom
docker exec onlyoffice-documentserver fc-list | grep -i 'Inter'
สำหรับฟอนต์ Inter ตัวอย่าง คำสั่งที่สองควรแสดงรายการตระกูลฟอนต์ที่ตรงกัน หาก fontconfig ตรวจพบ หากไฟล์มีอยู่แต่ไม่ปรากฏตระกูลฟอนต์ ให้ตรวจสอบสิทธิ์การเข้าถึงและเรียกใช้คำสั่งdocker exec onlyoffice-documentserver fc-cache -fจากนั้นตรวจสอบfc-listอีกครั้ง การค้นหาโดย fontconfig เพียงอย่างเดียวไม่ได้ทำให้เมนูของโปรแกรมแก้ไข ONLYOFFICE ปรากฏขึ้น
การตรวจสอบ fontconfig ช่วยแยกแยะไฟล์ฟอนต์ที่อ่านไม่ออกหรือหายไปออกจากแคตตาล็อกฟอนต์ ONLYOFFICE ที่ล้าสมัย
5. สร้างแคตตาล็อกฟอนต์ ONLYOFFICE ขึ้นใหม่
เมื่อมีไฟล์อยู่ในคอนเทนเนอร์แล้ว ให้เรียกใช้สคริปต์สร้างฟอนต์ของเซิร์ฟเวอร์เอกสาร:
docker exec onlyoffice-documentserver /usr/bin/documentserver-generate-allfonts.sh
ONLYOFFICE ใช้ขั้นตอนนี้เพื่อรีเฟรชข้อมูลการเลือกแบบอักษรและไฟล์ต่างๆ ขั้นตอนนี้อาจส่งผลกระทบต่อบริการแก้ไขข้อความที่ใช้งานอยู่ ดังนั้นควรดำเนินการในระหว่างช่วงเวลาการบำรุงรักษาที่เหมาะสม ตัวแปรสภาพแวดล้อม Docker ที่ระบุไว้ในเอกสารGENERATE_FONTSยังตั้งค่าเริ่มต้นเป็น ซึ่งจะtrueสร้างข้อมูลแบบอักษรใหม่เมื่อเริ่มต้นคอนเทนเนอร์ ซึ่งมีประโยชน์หลังจากรีสตาร์ท แต่ไม่สามารถทดแทนการติดตั้งไฟล์ในตำแหน่งถาวรได้
อย่าเปลี่ยนแปลงGENERATE_FONTSหรือบังคับรีสตาร์ทเพียงเพื่อปกปิดปัญหาไดรฟ์ที่หายไป ก่อนอื่นให้ตรวจสอบว่าไฟล์ที่คาดหวังได้ถูกเมานต์ไว้แล้วจริงหรือไม่
เรียกใช้สคริปต์สร้างฟอนต์ของ Document Server หลังจากที่คอนเทนเนอร์สามารถเข้าถึงไฟล์ฟอนต์ใหม่ได้แล้ว
ทางเลือกอื่น: การคัดลอก Docker ชั่วคราว หรือการใช้งาน Linux ดั้งเดิม
6. ใช้การคัดลอกคอนเทนเนอร์โดยตรงสำหรับการทดสอบที่มีอายุสั้น
หากคุณไม่สามารถแก้ไข Compose ได้ทันที ให้คัดลอกไฟล์ลงในคอนเทนเนอร์ปัจจุบัน แล้วสร้างแคตตาล็อกขึ้นใหม่ วิธีนี้เป็นไปตามแนวทางของ Docker ที่ ONLYOFFICE ได้ระบุไว้ และช่วยหลีกเลี่ยงการสร้างคอนเทนเนอร์ใหม่เพื่อการทดสอบอย่างรวดเร็ว:
docker cp ./Inter-Regular.ttf onlyoffice-documentserver:/usr/share/fonts/truetype/custom/
docker exec onlyoffice-documentserver /usr/bin/documentserver-generate-allfonts.sh
วิธีนี้สะดวกสำหรับการแก้ไขปัญหา แต่ไม่น่าเชื่อถือเท่าไหร่ในฐานะแผนการใช้งาน การอัปเดตอิมเมจหรือคอนเทนเนอร์ใหม่สามารถลบไฟล์ที่คัดลอกไว้ได้การรีสตาร์ทคอนเทนเนอร์เดิมไม่เหมือนกับการสร้างใหม่ควรย้ายการทดสอบที่สำเร็จไปยัง bind mount หรืออิมเมจแบบกำหนดเองที่ดูแลแยกต่างหากเมื่อจำเป็นต้องใช้ฟอนต์สำหรับงานที่กำลังดำเนินอยู่
7. ติดตั้งโดยตรงบนเซิร์ฟเวอร์เอกสาร Linux ที่ไม่ใช้คอนเทนเนอร์
สำหรับการติดตั้งแพ็กเกจ Linux ดั้งเดิม ให้วางไฟล์ไว้ในไดเร็กทอรีฟอนต์ระบบของเซิร์ฟเวอร์ แล้วเรียกใช้สคริปต์การสร้างใหม่แบบเดียวกันบนโฮสต์นั้น คำสั่งนี้ไม่ใช่คำสั่งที่จะเรียกใช้บนเดสก์ท็อปของผู้ใช้ทั่วไป
sudo install -d -m 755 /usr/share/fonts/truetype/custom
sudo install -m 644 Inter-Regular.ttf /usr/share/fonts/truetype/custom/
sudo /usr/bin/documentserver-generate-allfonts.sh
วิธีการนี้จะเก็บไฟล์ฟอนต์ไว้ในระบบ Linux แทนที่จะอยู่ใน Docker volume แต่ผู้ดูแลระบบต้องเก็บรักษาไฟล์เหล่านั้นไว้ในการจัดการการกำหนดค่าหรือการสำรองข้อมูลเมื่อทำการสร้างโฮสต์ใหม่ โปรดดูขั้นตอนอย่างเป็นทางการของ ONLYOFFICE สำหรับ Linuxสำหรับเซิร์ฟเวอร์ที่ติดตั้งแพ็กเกจ หากมีโหนด Document Server มากกว่าหนึ่งโหนดให้บริการบรรณาธิการของคุณ โปรดจัดเตรียมตระกูลและรูปแบบฟอนต์เดียวกันบนแต่ละโหนด
บนเซิร์ฟเวอร์เอกสาร Linux ดั้งเดิม ให้ติดตั้งฟอนต์บนเซิร์ฟเวอร์นั้นและสร้างแคตตาล็อกฟอนต์ขึ้นใหม่โดยไม่ต้องใช้คำสั่ง Docker
8. ตรวจสอบแบบอักษรในเอกสารจริง
เปิดเซสชันการแก้ไขใหม่ในแอปพลิเคชันที่เชื่อมต่อกับเซิร์ฟเวอร์เอกสาร ในไฟล์ DOCX สำหรับทดสอบ เลือกตระกูลฟอนต์ที่ติดตั้งจากเมนูแบบเลื่อนลงของฟอนต์ ป้อนข้อความปกติ ข้อความตัวหนา และอักขระที่ไม่ใช่ภาษาอังกฤษตัวอย่าง หากฟอนต์นั้นมีไว้สำหรับใช้งานหลายภาษา บันทึก ปิด เปิดใหม่ และส่งออกเป็น PDF เปรียบเทียบความกว้างของข้อความ การตัดบรรทัด ความครอบคลุมของตัวอักษร และรูปแบบตัวหนา/ตัวเอียงกับเอกสารอ้างอิงที่ทราบแล้ว
หากไม่พบฟอนต์ในเมนูแบบดรอปดาวน์ ให้ตรวจสอบพาธของเซิร์ฟเวอร์ ผลลัพธ์ของfc-listคำสั่ง และคำสั่งสร้างแคตตาล็อก ตามลำดับ หากฟอนต์ปรากฏขึ้นแต่เค้าโครงเปลี่ยนไป ให้ตรวจสอบว่าเอกสารนั้นต้องการฟอนต์ตระกูลนั้นอย่างถูกต้อง และมีน้ำหนักตัวอักษรที่จำเป็นหรือไม่ มิเช่นนั้นโปรแกรมแก้ไขอาจใช้ฟอนต์อื่นแทน การติดตั้งฟอนต์บนเดสก์ท็อปของผู้ใช้เพียงอย่างเดียวไม่ได้เป็นการเพิ่มฟอนต์ลงในเซิร์ฟเวอร์
มีข้อควรระวังเฉพาะเวอร์ชันของเบราว์เซอร์อยู่ข้อหนึ่ง: คำแนะนำเกี่ยวกับฟอนต์ของ ONLYOFFICE ระบุให้ล้างแคชของเบราว์เซอร์และเปิดโปรแกรมแก้ไขอีกครั้งในเวอร์ชัน8.1.3 หรือก่อนหน้าในเวอร์ชันที่ใหม่กว่านั้นไม่จำเป็นต้องทำขั้นตอนนี้ หากการติดตั้งของคุณเป็นเวอร์ชันเก่ากว่า ให้ทำตามขั้นตอนการล้างแคชที่ระบุไว้ก่อนที่จะตรวจสอบสาเหตุที่ซับซ้อนกว่านี้
ตรวจสอบให้แน่ใจว่าตระกูลฟอนต์ปรากฏอยู่ในเมนู จากนั้นเปิดเอกสารที่บันทึกไว้และเปรียบเทียบการจัดบรรทัดและการแสดงผลของตัวอักษร
การแก้ไขปัญหาจะได้รับการยืนยันเมื่อยังคงสามารถเลือกตระกูลฟอนต์ที่กำหนดเองได้หลังจากเปิดโปรแกรมแก้ไขอีกครั้ง เอกสารที่บันทึกไว้แสดงผลได้อย่างถูกต้อง และสำหรับ Docker ฟอนต์ยังคงอยู่หลังจากสร้างบริการใหม่จากคอนฟิกเดียวกัน หากการตรวจสอบข้อใดข้อหนึ่งล้มเหลว ให้ตรวจสอบเลเยอร์นั้นแทนที่จะคัดลอกฟอนต์ลงในคอนเทนเนอร์ซ้ำๆ