โมดูลสำหรับใช้กฎการพิมพ์เวลาที่ผ่านการทดสอบตามเวลากับเอกสารของคุณเพื่อปรับปรุงความชัดเจน
การพิมพ์เป็นศิลปะมากพอ ๆ กับวิทยาศาสตร์ที่ได้รับการปรับปรุงในช่วงประวัติศาสตร์ การทำงานอย่างไม่หยุดยั้งเพื่อปรับปรุงความชัดเจนของข้อความและการไหลนักพิมพ์อยู่ทั่วโลกได้กำหนดกฎมากมายที่มักถูกทิ้งไว้ในสื่อสิ่งพิมพ์ในปัจจุบัน โมดูลนี้มีจุดมุ่งหมายเพื่อแก้ไขสถานการณ์นี้
นี่เป็น งานที่อยู่ระหว่างดำเนินการ มากและคุณอาจไม่พบว่าเหมาะกับความต้องการของคุณเอง คุณสามารถมีส่วนร่วมในหลาย ๆ วิธีในการปรับปรุงโครงการนี้: โดยการส่งคำขอดึงแนะนำแนวคิดหรือบันทึกการประชุมวิชาการพิมพ์ของประเทศของคุณเอง
typographer ( input , configuration ) ; input เป็นสตริง หรือ องค์ประกอบ HTML (ดูข้อ จำกัด เกี่ยวกับอินพุต HTML)
configuration เป็นวัตถุที่มีคุณสมบัติทางเลือกต่อไปนี้:
locale : รหัสภาษาที่จะใช้ ค่าเริ่มต้นคือ enoutput_format : ทั้ง text หรือ html รูปแบบที่ใช้สำหรับการเปลี่ยน (เช่น u00a0 หรือ สำหรับช่องว่างที่ไม่ใช่การทำลาย) ค่าเริ่มต้นคือ textdisable_rules : อาร์เรย์ของกฎ/กฎชุดเพื่อปิดการใช้งาน (เช่น ['ruleset/name1', 'ruleset2/name2', 'ruleset3', ...] )ขึ้นอยู่กับประเภทอินพุต ตัวอักษรจะส่งคืนสตริง (เมื่อใช้อินพุตสตริง) หรืออัปเดตองค์ประกอบและลูกหลานของมันโดยตรงใน DOM
const fixed = typographer (
'Bonjour typographer: enchanté !' ,
{
locale : 'fr_FR' ,
output_format : 'html'
}
) ;
console . log ( fixed ) // 'Bonjour typographer : enchanté !' const elements = document . querySelectorAll ( '.fixTypography' )
[ ] . forEach . call ( elements , element => {
typographer (
element ,
{
locale : 'fr_FR' ,
output_format : 'html'
}
) ;
} ) ; แรงจูงใจแรกสำหรับโครงการนี้คือ ช่องว่าง อย่างที่คุณรู้ว่ามีพื้นที่มากกว่าหนึ่งประเภทเราจะดูไม่กี่:
คล้ายกับพื้นที่ปกติ แต่ไม่สามารถแตกข้ามสองบรรทัดเมื่อห่อ ทั้งสองคำ (คั่นด้วยพื้นที่ที่ไม่ทำลาย) จะจบลงที่บรรทัดเดียวกันเสมอ  เป็นพื้นที่ที่แคบกว่าพื้นที่ปกติ  มีขนาดเท่ากับพื้นที่บาง แต่ไม่สามารถแตกได้ในสองบรรทัดมีพื้นที่สี่ประเภทมากกว่าสี่ประเภท แต่คุณได้รับความคิด ช่องว่างที่ไม่ใช่การทำลายนั้นมีประโยชน์มากในการป้องกันการห่อหุ้มแปลก ๆ
พิจารณา 451 °F มันจะแปลก ๆ ที่จะมีหน่วยในบรรทัดแยกต่างหากนอกเหนือจากค่า? นี่คือสิ่งที่ไม่หยุดพักสำหรับ คุณต้องการใช้ช่องว่างที่ไม่ใช่การทำลาย
สิ่งนี้ไม่สามารถสมบูรณ์แบบได้และมีหลายกรณีที่นักเขียนตัวอักษรจะต้องดิ้นรนตัวอย่างเช่นระบบระหว่างประเทศของหน่วยระบุว่าหน่วยควรนำหน้าด้วยพื้นที่ (ที่ไม่ทำลาย) แต่มันค่อนข้างยากที่จะทำให้แน่ใจว่ามีบางอย่างเป็นหน่วย บางหน่วยอาจคลุมเครือมาก (เช่น V สำหรับโวลต์อาจเป็นตัวเลขโรมันสำหรับ 5)
เราจะเพิ่มพื้นที่ที่ไม่หยุดยั้งในหน่วยที่เราค่อนข้างมั่นใจและจะปล่อยให้คุณทำเพื่อให้คลุมเครือ
หากคุณใช้อินพุต สตริง HTML ที่มีสถานที่ที่ต้องใช้ช่องว่างที่ไม่หยุดนิ่ง (ปกติหรือแคบ) ก่อนเครื่องหมายวรรคตอนคุณควรตรวจสอบให้แน่ใจว่าสตริงของคุณไม่มีแท็กใด ๆ ที่ไม่ควรแปลงเช่น <code> หรือ <style> เช่น มิฉะนั้นคุณจะจบลงด้วยสิ่งต่าง ๆ เช่น color : red ; ซึ่งจะทำลายตัวอย่างสไตล์หรือรหัสของคุณ
การใช้อินพุต องค์ประกอบ HTML นั้นปลอดภัยเนื่องจากเรากรองโหนดที่ไม่ควรเปลี่ยนเช่นเดียวกับสิ่งที่กล่าวมาข้างต้น (และอื่น ๆ ) โปรดทราบว่าหากองค์ประกอบภายในอินพุตของคุณมีบางประเภทโหนดเหล่านั้นเราจะข้ามองค์ประกอบคอนเทนเนอร์ทั้งหมด
เราพยายามอย่างดีที่สุดเพื่อแก้ไขโดยอัตโนมัติให้มากที่สุดเท่าที่จะทำได้ แต่ผู้พิมพ์ตัวพิมพ์แรกคือ:“ เมื่อมีข้อสงสัยให้ทิ้งสิ่งต่าง ๆ ไว้”
นี่คือมันยากกฎแตกต่างกันไปตามประเทศและแม้กระทั่งในประเทศที่กำหนดอาจมีมากกว่าหนึ่งสไตล์ที่แนะนำ โดยค่าเริ่มต้นเราจะมุ่งเน้นไปที่การใช้กฎการพิมพ์ที่ไม่มีปัญหาในวิธีการ 80-20 ทั่วไป
หมายเหตุ: แคนาดา (ฝรั่งเศส) ใช้กฎที่แตกต่างกันสำหรับเครื่องหมายวรรคตอน
, ควรมีที่ว่างมาก่อนและมีพื้นที่ปกติหลังจาก. ควรมีพื้นที่ก่อนหน้านี้และมีพื้นที่ปกติหลังจากนั้น: ควรมีพื้นที่ที่ไม่แตกหักมาก่อนและมีพื้นที่ปกติหลังจากนั้น; ควรมีพื้นที่ที่ไม่แตกแคบก่อนและพื้นที่ปกติหลังจากนั้น? ควรมีพื้นที่ที่ไม่แตกแคบก่อนและพื้นที่ปกติหลังจากนั้น! ควรมีพื้นที่ที่ไม่แตกแคบก่อนและพื้นที่ปกติหลังจากนั้น« , ‹ ควรมีพื้นที่ปกติก่อนและพื้นที่ที่ไม่หยุดพักแคบหลังจาก» , › ควรมีพื้นที่แคบ ๆ ที่ไม่หยุดพักก่อนและพื้นที่ปกติหลังจาก“ , ' ควรมีพื้นที่ปกติก่อนและไม่มีที่ว่างหลังจาก” , ' ไม่ควรมีพื้นที่ก่อนและพื้นที่ปกติหลังจาก( ควรมีพื้นที่ปกติก่อนและไม่มีที่ว่างหลังจาก) ไม่ควรมีพื้นที่ก่อนและพื้นที่ปกติหลังจาก[ ควรมีพื้นที่ปกติก่อนและไม่มีที่ว่างหลังจาก] ไม่ควรมีพื้นที่ก่อนและพื้นที่ปกติหลังจาก- (ยัติภังค์) ไม่ควรมีที่ว่างก่อนหรือหลัง— (em, ยาว) หรือ – (en, medium) ควรมีพื้นที่ปกติด้านนอกและพื้นที่ที่ไม่หยุดพักภายในเมื่อจับคู่กับข้อความบางส่วน… , ... , หรือ . . . ควรมีพื้นที่ก่อนและพื้นที่ปกติหลังจาก ยกเว้นเมื่ออยู่ระหว่างวงเล็บเหลี่ยมหรือวงเล็บที่ไม่ควรมีที่ว่างก่อนหรือหลัง' ไม่ควรมีที่ว่างก่อนหรือหลัง, ควรมีที่ว่างมาก่อนและมีพื้นที่ปกติหลังจาก. ควรมีพื้นที่ก่อนหน้านี้และมีพื้นที่ปกติหลังจากนั้น: ไม่ควรมีที่ว่างมาก่อนและมีพื้นที่ปกติหลังจาก; ควรมีพื้นที่ก่อนหน้านี้และมีพื้นที่ปกติหลังจากนั้น? ควรมีพื้นที่ก่อนหน้านี้และมีพื้นที่ปกติหลังจากนั้น! ควรมีพื้นที่ก่อนหน้านี้และมีพื้นที่ปกติหลังจากนั้น“ , ' ควรมีพื้นที่ปกติก่อนและไม่มีที่ว่างหลังจาก” , ' ไม่ควรมีพื้นที่ก่อนและพื้นที่ปกติหลังจาก« , ‹ ควรมีพื้นที่ปกติก่อนและพื้นที่ที่ไม่หยุดพักแคบหลังจาก» , › ควรมีพื้นที่แคบ ๆ ที่ไม่หยุดพักก่อนและพื้นที่ปกติหลังจาก( ควรมีพื้นที่ปกติก่อนและไม่มีที่ว่างหลังจาก) ไม่ควรมีพื้นที่ก่อนและพื้นที่ปกติหลังจาก[ ควรมีพื้นที่ปกติก่อนและไม่มีที่ว่างหลังจาก] ไม่ควรมีพื้นที่ก่อนและพื้นที่ปกติหลังจาก- (ยัติภังค์) ไม่ควรมีที่ว่างก่อนหรือหลัง— (em, ยาว) หรือ – (en, medium) ไม่มีที่ว่างก่อนหรือหลังจาก EM Dash ควรมีพื้นที่ก่อนที่จะใช้เพื่อระบุแหล่งที่มาของใบเสนอราคา… , ... , หรือ . . . สามารถมีช่องว่างปกติก่อนและหลังไม่มีที่ว่างก่อนและพื้นที่ปกติหลังจากหรือพื้นที่ก่อนและไม่มีที่ว่างหลังจาก' ไม่ควรมีที่ว่างก่อนหรือหลัง เวลาส่วนใหญ่คุณสามารถใช้รหัสภาษาทั่วไปได้ แต่ถ้าคุณพบว่าการแปลงที่ใช้ไม่ถูกต้องลองใช้รหัสสถานที่เฉพาะสำหรับประเทศของคุณ ตัวอย่างเช่นแคนาดาฝรั่งเศส ( fr_CA ) ใช้กฎการเว้นวรรคที่แตกต่างกันสำหรับเครื่องหมายวรรคตอนดังนั้นการใช้ fr ในบริบทนั้นน่าจะให้ผลลัพธ์ที่ไม่เหมาะสม
en - รหัสภาษาทั่วไปสำหรับภาษาอังกฤษen_US - สหรัฐอเมริกาen_GB - สหราชอาณาจักรen_CA - แคนาดาen_AU - ออสเตรเลียen_NZ - นิวซีแลนด์en_IN - อินเดียfr - รหัสภาษาทั่วไปสำหรับภาษาฝรั่งเศสfr_FR - ฝรั่งเศสfr_BE - เบลเยียมfr_CA - แคนาดาfr_CH - สวิสfr_LU - ลักเซมเบิร์กfr_MC - โมนาโกde - รหัสภาษาทั่วไปสำหรับภาษาเยอรมันde_DE - เยอรมนีde_AT - ออสเตรียde_BE - เบลเยียมde_CH - สวิสde_LI - Liechtensteinde_LU - ลักเซมเบิร์กes - รหัสภาษาทั่วไปสำหรับภาษาสเปนes_ES - สเปนes_AR - อาร์เจนตินาes_BO - โบลิเวียes_CL - ชิลีes_CO - โคลัมเบียes_CR - คอสตาริกาes_DO - สาธารณรัฐโดมินิกันes_EC - เอกวาดอร์es_SV - เอลซัลวาดอร์es_GT - กัวเตมาลาes_HN - ฮอนดูรัสes_MX - เม็กซิโกes_NI - นิการากัวes_PA - ปานามาes_PY - ปารากวัยes_PE - เปรูes_PR - เปอร์โตริโกes_UY - อุรุกวัยes_US - สหรัฐอเมริกาes_VE - เวเนซุเอลา