การแสดงแบบอักษรใช้งานได้จริงอย่างไร


11

ฉันรู้ว่าฉันไม่รู้อะไรเกี่ยวกับวิธีการแสดงตัวอักษรในคอมพิวเตอร์ของฉัน

จากสิ่งที่ฉันสามารถสังเกตเห็นการแสดงผลแบบอักษรโดยทั่วไปจะทำในลักษณะที่สอดคล้องกันตลอดทั้งระบบ ตัวอย่างเช่นการตั้งค่าคำใบ้แบบอักษร subpixel ที่ฉันกำหนดค่าในแผงควบคุม DE มีผลกับข้อความที่ปรากฏบนขอบหน้าต่างในเบราว์เซอร์ของฉันในโปรแกรมแก้ไขข้อความและอื่น ๆ (ฉันควรสังเกตว่าบางแอปพลิเคชัน Java แสดงความแตกต่างที่เห็นได้ชัดเจนดังนั้นฉันเดาว่าพวกเขากำลังใช้กลไกการแสดงผลแบบอักษรที่แตกต่างกัน)

สิ่งที่ฉันได้รับจากข้างต้นคืออาจเป็นแอปพลิเคชันทั้งหมดที่ต้องการการแสดงผลแบบอักษรใช้ประโยชน์จากห้องสมุด OS (หรือ DE) บางตัว

ในทางกลับกันเบราว์เซอร์มักจะจัดการการเรนเดอร์ของตนเองผ่านเอ็นจิ้นการเรนเดอร์ที่ดูแลการวางตำแหน่งรายการต่าง ๆ รวมถึงข้อความ - ตามกฎการไหลที่เฉพาะเจาะจง

ฉันไม่แน่ใจว่าข้อเท็จจริงทั้งสองนี้เข้ากันได้อย่างไร ฉันจะสมมติว่าเบราว์เซอร์จะต้องขอให้ระบบปฏิบัติการวาดสัญลักษณ์ในตำแหน่งที่กำหนด แต่จะจัดการการไหลของข้อความโดยไม่ทราบล่วงหน้าได้อย่างไรว่าจะใช้พื้นที่ร่ายมนตร์เท่าใด มีการโทรแยกต่างหากเพื่อกำหนดขนาดของสัญลักษณ์เพื่อให้เบราว์เซอร์สามารถจัดการการไหลราวกับว่าตัวละครเป็นช่องเล็ก ๆ ที่ระบบปฏิบัติการกรอกในภายหลังหรือไม่ (แม้ว่าจะไม่ได้ดูแลการจัดช่องไฟ) หรือระบบปฏิบัติการมีความรับผิดชอบในการวาดพื้นที่ข้อความทั้งหมดรวมถึงการไหลของข้อความ? ระบบปฏิบัติการคืนค่า glyph ที่ถูกเรนเดอร์เป็นบิตแมปแล้วปล่อยให้แอปพลิเคชั่นวาดบนหน้าจอหรือไม่?


1
คำตอบสั้น ๆ คือ "ใช่"
Graham Borland

@ GrahamBorland ... : - / หนึ่งในสามตัวเลือกที่ฉันบรรยายไว้คือคำตอบ "ใช่"?
Andrea

ทั้งหมดขึ้นอยู่กับสถานการณ์ ฉันจะพยายามเขียนคำตอบที่เหมาะสม
Graham Borland

คำตอบ:


9

คุณถูกต้องว่าโดยทั่วไปแอปพลิเคชันใช้ไลบรารีที่จัดทำโดยระบบปฏิบัติการหรือชุดเครื่องมือ GUI เพื่อทำการแสดงผลแบบอักษร

เอนจินแบบอักษรทั่วไปอนุญาตให้มีโหมดการทำงานหลายอย่าง สำหรับกรณีที่เรียบง่ายแอปพลิเคชันสามารถขอให้มีการลากสายอักขระของข้อความในตำแหน่งที่แน่นอนและเอ็นจิ้นจะดูแลทุกอย่าง (การวัดการวางตำแหน่งการวาดพิกเซลเพื่อแสดง ฯลฯ )

สำหรับแอปพลิเคชั่นที่ต้องการการควบคุมระดับสูงกว่า - เบราว์เซอร์หรือโปรแกรมประมวลผลคำ - เอ็นจิ้นจะเปิดเผยส่วนต่อประสานที่แอพสามารถขอข้อความที่กำหนดไว้ล่วงหน้าได้ จากนั้นแอพสามารถใช้ความรู้นี้ในการคำนวณจำนวนข้อความที่สามารถใส่ลงในบรรทัดได้โดยที่ควรจะมีการแบ่งบรรทัดจะใช้พื้นที่ว่างเท่าใดในย่อหน้า ฯลฯ แอพยังสามารถขอให้เครื่องยนต์ทำการเรนเดอร์จริง ของพิกเซล

(อาจมีสถานการณ์ในระหว่างที่เอ็นจิ้นสามารถใช้พารามิเตอร์ความกว้างสูงสุดและอาจเป็นพารามิเตอร์การจัดช่องว่างภายใน / แพ็ดดิ้งและแสดงข้อความโดยอัตโนมัติให้มากที่สุดเท่าที่จะพอดี)

ในที่สุดเอ็นจิ้นฟอนต์อาจอนุญาตให้แอปใช้การเรนเดอร์ข้อความสุดท้ายโดยส่งกลับบิตแมปของ glyphs ที่แสดงผลล่วงหน้าในขนาดที่กำหนดไว้ทำให้แอปสามารถจัดตำแหน่ง หรือเอ็นจิ้นอาจเสนอให้ส่งคืนข้อมูลเค้าร่างดิบสำหรับการแสดงผลด้วยชุดเครื่องมือเวกเตอร์

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