ข้ามไปยังเนื้อหา
getnextpdf.com

Pro รุ่น

เครื่องมือฟอนต์

NextPDF Pro ตรวจสอบโปรแกรมฟอนต์ที่ฝังอยู่ ระบุฟอนต์ซับเซ็ตจากแบบแผนการตั้งชื่อมาตรฐาน และผลิตแผนการคืนซับเซ็ตที่มีโครงสร้างพร้อมผลกระทบต่อขนาดโดยประมาณ

ความสามารถนี้มาพร้อมกับ NextPDF Pro (nextpdf/pro) และเปิดใช้งานด้วย envelope ใบอนุญาตระดับ Pro การนำไปใช้งานที่ไม่มีสิทธิ์นั้นจะไม่โหลดคลาสของความสามารถนี้ เปรียบเทียบรุ่นและขอใบอนุญาต

ไม่มีแฟล็กใบอนุญาตแบบต่อฟีเจอร์ควบคุมโมดูลนี้ คลาส Font Tools พร้อมใช้งานเมื่อใดก็ตามที่ติดตั้ง nextpdf/pro

Terminal window
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

คลาสหน้าที่
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 ไม่เปลี่ยนพฤติกรรมของ Font Tools Enterprise เพิ่มฟีเจอร์ระดับสูงขึ้นที่บันทึกแยกต่างหาก โดยฟีเจอร์เหล่านั้นไม่จำเป็นสำหรับการตรวจจับซับเซ็ตหรือการวางแผนการคืนซับเซ็ต

ไปป์ไลน์ฟอนต์แบบโอเพนซอร์สของ NextPDF Core จัดการการฝังฟอนต์พื้นฐาน การนับซับเซ็ตและการวางแผนการคืนซับเซ็ตเป็นการเพิ่มเติมของ Pro ดู /modules/font/

หน้านี้บันทึกเฉพาะพฤติกรรมที่สังเกตได้จากภายนอกและพื้นผิว API สาธารณะที่รองรับเท่านั้น เส้นทาง namespace ภายใน คลาสตัวช่วย ตารางกลไก ชื่อไฟล์ runbook และคำนำหน้าหมายเลขทิกเก็ตอยู่นอกขอบเขต

  • Font Tools — Deep Reference — สัญญา API พฤติกรรม และโหมดความล้มเหลว
  • Optimizer — การปรับขนาดไฟล์ให้เหมาะสม
  • Core font module — การจัดการฟอนต์แบบโอเพนซอร์ส