Pro รุ่น
เครื่องมือฟอนต์
ภาพรวมโดยสังเขป
หัวข้อที่มีชื่อว่า “ภาพรวมโดยสังเขป”NextPDF Pro ตรวจสอบโปรแกรมฟอนต์ที่ฝังอยู่ ระบุฟอนต์ซับเซ็ตจากแบบแผนการตั้งชื่อมาตรฐาน และผลิตแผนการคืนซับเซ็ตที่มีโครงสร้างพร้อมผลกระทบต่อขนาดโดยประมาณ
ความพร้อมใช้งานและการอนุญาต
หัวข้อที่มีชื่อว่า “ความพร้อมใช้งานและการอนุญาต”ความสามารถนี้มาพร้อมกับ NextPDF Pro (nextpdf/pro) และเปิดใช้งานด้วย envelope ใบอนุญาตระดับ Pro การนำไปใช้งานที่ไม่มีสิทธิ์นั้นจะไม่โหลดคลาสของความสามารถนี้ เปรียบเทียบรุ่นและขอใบอนุญาต
ไม่มีแฟล็กใบอนุญาตแบบต่อฟีเจอร์ควบคุมโมดูลนี้ คลาส Font Tools พร้อมใช้งานเมื่อใดก็ตามที่ติดตั้ง nextpdf/pro
การติดตั้ง
หัวข้อที่มีชื่อว่า “การติดตั้ง”composer require nextpdf/pro:^3ภาพรวมเชิงแนวคิด
หัวข้อที่มีชื่อว่า “ภาพรวมเชิงแนวคิด”ฟอนต์ซับเซ็ตใน PDF ฝังเฉพาะกลิฟที่เอกสารใช้เท่านั้น ตามแบบแผน ชื่อ /BaseFont ของฟอนต์เหล่านั้นจะมีแท็กตัวพิมพ์ใหญ่หกตัวตามด้วย + ตัวอย่างเช่น ABCDEF+Arial NextPDF Pro:
- ตรวจจับซับเซ็ต
FontDesubsetterสแกนข้อมูล PDF ดิบเพื่อหารายการ/BaseFontรู้จักรูปแบบคำนำหน้าซับเซ็ต และรายงานแต่ละรายการเป็นออบเจ็กต์ค่าSubsetInfoพร้อมชื่อตระกูลดั้งเดิม จำนวนกลิฟซับเซ็ต จำนวนกลิฟทั้งหมด และการเข้ารหัส - วางแผนการคืนซับเซ็ต
DesubsetPlanรวบรวมฟอนต์ซับเซ็ตที่กำหนดเป้าหมายให้แทนที่ด้วยโปรแกรมฟอนต์แบบเต็ม และรายงานการเพิ่มขนาดไบต์โดยประมาณ เพื่อให้คุณตัดสินใจได้ว่าการคืนซับเซ็ตคุ้มกับต้นทุนขนาดไฟล์หรือไม่ก่อนลงมือ
Font Tools เป็นชั้นการวิเคราะห์และการวางแผน โดยอธิบายว่ามีอะไรอยู่และการคืนซับเซ็ตจะมีต้นทุนเท่าใด แต่ไม่ได้เขียนโปรแกรมฟอนต์ขึ้นใหม่ด้วยตัวเอง
เหตุใดจึงทำงานเช่นนี้
หัวข้อที่มีชื่อว่า “เหตุใดจึงทำงานเช่นนี้”การเขียนโปรแกรมฟอนต์ที่ฝังอยู่ขึ้นใหม่คือส่วนที่ยากและมีความเสี่ยง เส้นโครงร่างกลิฟ การ hinting และตาราง cmap ต้องคงความสอดคล้องกัน และความผิดพลาดเพียงจุดเดียวก็ทำให้การเรนเดอร์เสียหาย ดังนั้น NextPDF Pro จึงแยกงานที่ราคาถูกและปลอดภัย ได้แก่ การทำบัญชีรายการและการประมาณการต้นทุน ออกจากการเขียนใหม่ที่มีราคาแพงนั้น ตัวสแกนอ่านเฉพาะไบต์เท่านั้น ไม่เคยแจงหรือรันโปรแกรมฟอนต์ จึงคงความเป็นเชิงกำหนดและปราศจากผลข้างเคียง จำนวนกลิฟและส่วนต่างขนาดถูกระบุว่าเป็นฮิวริสติกโดยเจตนา เพื่อให้การประเมินความสามารถยังคงตรงไปตรงมาแทนที่จะเชื่อตัวเลขที่โมดูลไม่สามารถวัดได้ นั่นทำให้คุณสามารถชั่งน้ำหนักได้ว่าการคืนซับเซ็ตคุ้มกับต้นทุนหรือไม่ก่อนจัดหาโปรแกรมฟอนต์แบบเต็ม
ภูมิหลังการออกแบบ: Fonts: the hard part
พื้นผิว API
หัวข้อที่มีชื่อว่า “พื้นผิว API”| คลาส | หน้าที่ |
|---|---|
FontDesubsetter | สแกนข้อมูล PDF และรายงานรายการฟอนต์ซับเซ็ต |
SubsetInfo | คำอธิบายที่ไม่เปลี่ยนแปลงของซับเซ็ตหนึ่งรายการที่ตรวจพบ |
DesubsetPlan | ซับเซ็ตที่กำหนดเป้าหมายพร้อมการเพิ่มขนาดโดยประมาณ |
ตัวอย่างโค้ด — เริ่มต้นอย่างรวดเร็ว
หัวข้อที่มีชื่อว่า “ตัวอย่างโค้ด — เริ่มต้นอย่างรวดเร็ว”use NextPDF\Pro\FontTools\FontDesubsetter;
$subsets = (new FontDesubsetter())->analyzeSubsets($pdfBytes);foreach ($subsets as $info) { echo $info->baseFont . ': ' . $info->subsetGlyphCount . " glyphs\n";}ตัวอย่างโค้ด — การใช้งานจริง
หัวข้อที่มีชื่อว่า “ตัวอย่างโค้ด — การใช้งานจริง”use NextPDF\Pro\FontTools\FontDesubsetter;
$desubsetter = new FontDesubsetter();$subsets = $desubsetter->analyzeSubsets($pdfBytes);$logger->info('fonttools.scan', ['subset_count' => count($subsets)]);กรณีขอบและข้อควรระวัง
หัวข้อที่มีชื่อว่า “กรณีขอบและข้อควรระวัง”- ตัวสแกนรายงาน
/BaseFontที่ไม่มีคำนำหน้าหกตัวอักษรว่าเป็นรายการที่ไม่ใช่ซับเซ็ตแทนที่จะข้ามไป - การเพิ่มขนาดโดยประมาณเป็นฮิวริสติกที่อิงค่าเฉลี่ยไบต์ต่อกลิฟ ไม่ใช่ค่าที่วัดได้
- การตรวจจับทำงานบนการนำเสนอระดับไบต์ของรายการ
/BaseFontสตรีมออบเจ็กต์ที่เข้ารหัสหรือถูกบีบอัดอย่างหนักอาจต้องถอดรหัสก่อน
ประสิทธิภาพ
หัวข้อที่มีชื่อว่า “ประสิทธิภาพ”การสแกนซับเซ็ตเป็นเชิงเส้นตามความยาวไบต์ของ PDF การวางแผนเป็นเชิงเส้นตามจำนวนซับเซ็ตที่ตรวจพบ
บันทึกด้านความปลอดภัย
หัวข้อที่มีชื่อว่า “บันทึกด้านความปลอดภัย”Font Tools อ่านเฉพาะเมทาดาทาเชิงโครงสร้างเท่านั้น โดยไม่รันโปรแกรมฟอนต์หรือคลี่คลายการอ้างอิงฟอนต์ภายนอก
ความสอดคล้องกับมาตรฐาน
หัวข้อที่มีชื่อว่า “ความสอดคล้องกับมาตรฐาน”| พฤติกรรม | อ้างอิง | สถานะ |
|---|---|---|
| แบบแผนการตั้งชื่อฟอนต์ซับเซ็ต | ISO 32000-2 §9.9.2 | สอดคล้อง (เรียบเรียงใหม่) |
สัญญาพฤติกรรม
หัวข้อที่มีชื่อว่า “สัญญาพฤติกรรม”FontDesubsetter::analyzeSubsets()สแกนข้อมูล PDF ดิบเพื่อหารายการ/BaseFontรู้จักคำนำหน้าซับเซ็ตแบบตัวพิมพ์ใหญ่หกตัวบวก+และคืนค่าแต่ละรายการเป็นSubsetInfoที่ไม่เปลี่ยนแปลงพร้อมชื่อตระกูลดั้งเดิม จำนวนกลิฟซับเซ็ต จำนวนกลิฟทั้งหมด และการเข้ารหัส/BaseFontที่ไม่มีคำนำหน้าซับเซ็ตจะถูกรายงานว่าเป็นรายการที่ไม่ใช่ซับเซ็ตแทนที่จะถูกข้ามDesubsetPlanรวบรวมซับเซ็ตที่กำหนดเป้าหมายให้แทนที่และรายงานการเพิ่มขนาดไบต์โดยประมาณที่อิงค่าเฉลี่ยไบต์ต่อกลิฟ ซึ่งเป็นฮิวริสติก ไม่ใช่ค่าที่วัดได้- นี่คือชั้นการวิเคราะห์และการวางแผน โดยรายงานว่ามีอะไรอยู่และการคืนซับเซ็ตจะมีต้นทุนเท่าใด แต่ไม่ได้เขียนโปรแกรมฟอนต์ขึ้นใหม่ ไม่รันโปรแกรมฟอนต์ หรือคลี่คลายการอ้างอิงฟอนต์ภายนอก
บันทึกขอบเขตของ Enterprise
หัวข้อที่มีชื่อว่า “บันทึกขอบเขตของ Enterprise”Enterprise ไม่เปลี่ยนพฤติกรรมของ Font Tools Enterprise เพิ่มฟีเจอร์ระดับสูงขึ้นที่บันทึกแยกต่างหาก โดยฟีเจอร์เหล่านั้นไม่จำเป็นสำหรับการตรวจจับซับเซ็ตหรือการวางแผนการคืนซับเซ็ต
ทางสำรอง / ทางเลือกของ Core
หัวข้อที่มีชื่อว่า “ทางสำรอง / ทางเลือกของ Core”ไปป์ไลน์ฟอนต์แบบโอเพนซอร์สของ NextPDF Core จัดการการฝังฟอนต์พื้นฐาน การนับซับเซ็ตและการวางแผนการคืนซับเซ็ตเป็นการเพิ่มเติมของ Pro ดู /modules/font/
ขอบเขตการเผยแพร่
หัวข้อที่มีชื่อว่า “ขอบเขตการเผยแพร่”หน้านี้บันทึกเฉพาะพฤติกรรมที่สังเกตได้จากภายนอกและพื้นผิว API สาธารณะที่รองรับเท่านั้น เส้นทาง namespace ภายใน คลาสตัวช่วย ตารางกลไก ชื่อไฟล์ runbook และคำนำหน้าหมายเลขทิกเก็ตอยู่นอกขอบเขต
ดูเพิ่มเติม
หัวข้อที่มีชื่อว่า “ดูเพิ่มเติม”- Font Tools — Deep Reference — สัญญา API พฤติกรรม และโหมดความล้มเหลว
- Optimizer — การปรับขนาดไฟล์ให้เหมาะสม
- Core font module — การจัดการฟอนต์แบบโอเพนซอร์ส