github.com/pdfcpu/pdfcpu@v0.11.1/pkg/api/test/createUserFont_test.go (about)

     1  /*
     2  Copyright 2020 The pdf Authors.
     3  
     4  Licensed under the Apache License, Version 2.0 (the "License");
     5  you may not use this file except in compliance with the License.
     6  You may obtain a copy of the License at
     7  
     8  	http://www.apache.org/licenses/LICENSE-2.0
     9  
    10  Unless required by applicable law or agreed to in writing, software
    11  distributed under the License is distributed on an "AS IS" BASIS,
    12  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13  See the License for the specific language governing permissions and
    14  limitations under the License.
    15  */
    16  
    17  package test
    18  
    19  import (
    20  	"path/filepath"
    21  	"testing"
    22  
    23  	"github.com/pdfcpu/pdfcpu/pkg/pdfcpu"
    24  	"github.com/pdfcpu/pdfcpu/pkg/pdfcpu/color"
    25  	"github.com/pdfcpu/pdfcpu/pkg/pdfcpu/draw"
    26  	"github.com/pdfcpu/pdfcpu/pkg/pdfcpu/model"
    27  	"github.com/pdfcpu/pdfcpu/pkg/pdfcpu/types"
    28  )
    29  
    30  const (
    31  	sampleArabic = `الإعلان العالمي لحقوق الإنسان
    32  
    33  المادة 1.
    34  يولد جميع الناس أحرارًا ومتساوين في الكرامة والحقوق.
    35  وقد وهبوا عقلاً وضميرًا وعليهم أن يعامل بعضهم بعضًا بروح الإخاء.
    36  
    37  المادة 2.
    38  لكل فرد الحق في جميع الحقوق والحريات المنصوص عليها في هذا الإعلان ، دون تمييز من أي نوع ،
    39  مثل العرق أو اللون أو الجنس أو اللغة أو الدين أو الرأي السياسي أو غير السياسي أو الأصل القومي أو الاجتماعي أو الملكية أو
    40  ولادة أو حالة أخرى. علاوة على ذلك ، لا يجوز التمييز على أساس سياسي أو قضائي أو
    41  الوضع الدولي للبلد أو الإقليم الذي ينتمي إليه الشخص ، سواء كان مستقلاً ، أو محل ثقة ،
    42  غير متمتع بالحكم الذاتي أو تحت أي قيود أخرى على السيادة.`
    43  
    44  	sampleArmenian = `Մարդու իրավունքների համընդհանուր հռչակագիր
    45  
    46  Հոդված 1.
    47  Բոլոր մարդիկ ծնվում են ազատ և հավասար ՝ արժանապատվությամբ և իրավունքներով:
    48  Նրանք օժտված են բանականությամբ և խղճով և պետք է եղբայրության ոգով գործեն միմյանց նկատմամբ:
    49  
    50  Հոդված 2.
    51  Յուրաքանչյուր ոք ունի սույն Հռչակագրում ամրագրված բոլոր իրավունքներն ու ազատությունները առանց որևէ տեսակի տարբերակման,
    52  ինչպիսիք են ռասան, գույնը, սեռը, լեզուն, կրոնը, քաղաքական կամ այլ կարծիքը, ազգային կամ սոցիալական ծագումը, սեփականությունը,
    53  ծնունդ կամ այլ կարգավիճակ: Ավելին, որևէ տարբերակում չի կարող դրվել քաղաքական, իրավասության կամ իրավունքի հիման վրա
    54  երկրի կամ տարածքի միջազգային կարգավիճակը, որին պատկանում է անձը, անկախ այն լինելուց, վստահություն,
    55  ոչ ինքնակառավարվող կամ ինքնիշխանության որևէ այլ սահմանափակման ներքո:`
    56  
    57  	sampleAzerbaijani = `Ümumdünya İnsan Haqları Bəyannaməsi
    58  
    59  Maddə 1
    60  Bütün insanlar azad və ləyaqət və hüquqlara bərabər olaraq doğulurlar.
    61  Onlara ağıl və vicdan bəxş edilmişdir və bir-birlərinə qardaşlıq ruhunda davranmalıdırlar.
    62  
    63  Maddə 2
    64  Hər kəs bu Bəyannamədə göstərilən bütün hüquq və azadlıqlara, heç bir fərq qoymadan,
    65  irqi, rəngi, cinsi, dili, dini, siyasi və ya digər fikri, milli və ya sosial mənşəyi, mülkiyyəti,
    66  doğum və ya digər vəziyyət. Bundan əlavə, siyasi, yurisdiksiyalı və ya əsas götürülərək heç bir fərq qoyulmayacaqdır
    67  bir şəxsin mənsub olduğu ölkənin və ya ərazinin beynəlxalq statusu, müstəqil, etibarlı,
    68  özünüidarə etməmək və ya suverenliyin hər hansı digər məhdudiyyəti altında.`
    69  
    70  	sampleBangla = `মানবাধিকারের সর্বজনীন ঘোষণা:
    71  
    72  অনুচ্ছেদ 1।
    73  সমস্ত মানুষ মর্যাদা ও অধিকারে স্বাধীন ও সমান জন্মগ্রহণ করে।
    74  এগুলি যুক্তি ও বিবেকের অধিকারী এবং ভ্রাতৃত্বের মনোভাবের সাথে একে অপরের প্রতি আচরণ করা উচিত।
    75  
    76  অনুচ্ছেদ 2।
    77  এই ঘোষণাপত্রে নির্ধারিত সমস্ত অধিকার এবং স্বাধীনতার জন্য প্রত্যেকেই অধিকারপ্রাপ্ত,
    78  কোনও প্রকারভেদ ছাড়াই, যেমন জাতি, বর্ণ, লিঙ্গ, ভাষা, ধর্ম, রাজনৈতিক বা অন্যান্য মতামত,
    79  জাতীয় বা সামাজিক উত্স, সম্পত্তি, জন্ম বা অন্য অবস্থা। তদুপরি, রাজনৈতিক,
    80  এখতিয়ার বা ভিত্তিতে কোনও পার্থক্য করা হবে না একজন ব্যক্তি যার দেশ বা অঞ্চলে তার আন্তর্জাতিক
    81  অবস্থান, এটি স্বাধীন, বিশ্বাস, স্ব-শাসন পরিচালনা বা সার্বভৌমত্বের অন্য কোনও সীমাবদ্ধতার অধীনে।`
    82  
    83  	sampleBelarusian = `УСЕАГУЛЬНАЯ ДЭКЛАРАЦЫЯ ПРАВОЎ ЧАЛАВЕКА
    84  
    85  Артыкул 1.
    86  Усе людзi нараджаюцца свабоднымi i роўнымi ў сваёй годнасцi i правах. Яны надзелены розумам i сумленнем i павiнны ставiцца
    87  адзiн да аднаго ў духу брацтва.
    88  
    89  Артыкул 2.
    90  Кожны чалавек павiнен валодаць усiмi правамi i ўсiмi свабодамi, што абвешчаны гэтай Дэкларацыяй, без якога б там нi было адрознення,
    91  як напрыклад у адносiнах расы, колеру скуры, полу, мовы, рэлiгii, палiтычных або iншых перакананняў, нацыянальнага або сацыяльнага
    92  паходжання, маёмаснага, саслоўнага або iншага становiшча.
    93  Апрача таго, не павiнна рабiцца нiякага адрознення на аснове палiтычнага, прававога або мiжнароднага статуса краiны або тэрыторыi,
    94  да якой чалавек належыць, незалежна ад таго, цi з’яўляецца гэта тэрыторыя незалежнай, падапечнай, несамакiравальнай,
    95  або як-небудзь iнакш абмежаванай у сваiм суверэнiтэце.`
    96  
    97  	sampleChineseSimple = `世界人权宣言
    98  
    99  第一条
   100  人人生而自由,在尊严和权利上一律平等。他们赋有理性和良心,并应以兄弟关系的精神相对待。
   101  
   102  第二条
   103  人人有资格享有本宣言所载的一切权利和自由,不分种族、肤色、性别、语言、宗教、政治或其他见解、国籍或社会出身、财产、出生或其他身分等任何区别。
   104  
   105  并且不得因一人所属的国家或领土的政治的、行政的或者国际的地位之不同而有所区别,无论该领土是独立领土、托管领土、非自治领土或者处于其他任何主权受限制的情况之下。`
   106  
   107  	sampleChineseTraditional = `世界人權宣言
   108  
   109  第一條
   110  人人生而自由,在尊嚴和權利上一律平等。他們賦有理性和良心,並應以兄弟關係的精神相對待。
   111  
   112  第二條
   113  人人有資格享有本宣言所載的一切權利和自由,不分種族、膚色、性別、語言、宗教、政治或其他見解、國籍或社會出身、財產、出生或其他身分等任何區別。
   114  
   115  並且不得因一人所屬的國家或領土的政治的、行政的或者國際的地位之不同而有所區別,無論該領土是獨立領土、託管領土、非自治領土或者處於其他任何主權受限制的情況之下。`
   116  
   117  	sampleEnglish = `Universal Declaration of Human Rights
   118  
   119  Article 1.
   120  All human beings are born free and equal in dignity and rights.
   121  They are endowed with reason and conscience and should act towards one another in a spirit of brotherhood.
   122  
   123  Article 2.
   124  Everyone is entitled to all the rights and freedoms set forth in this Declaration, without distinction of any kind,
   125  such as race, colour, sex, language, religion, political or other opinion, national or social origin, property,
   126  birth or other status. Furthermore, no distinction shall be made on the basis of the political, jurisdictional or
   127  international status of the country or territory to which a person belongs, whether it be independent, trust,
   128  non-self-governing or under any other limitation of sovereignty.`
   129  
   130  	sampleFrench = `Déclaration universelle des droits de l'Homme
   131  
   132  Article 1.
   133  Tous les êtres humains naissent libres et égaux en dignité et en droits. Ils sont doués de raison et de conscience et doivent agir les uns envers les autres
   134  dans un esprit de fraternité.
   135  
   136  Article 2.
   137  Chacun peut se prévaloir de tous les droits et de toutes les libertés proclamés dans la présente Déclaration, sans distinction aucune, notamment de race,
   138  de couleur, de sexe, de langue, de religion, d'opinion politique ou de toute autre opinion, d'origine nationale ou sociale, de fortune, de naissance ou de toute
   139  autre situation. De plus, il ne sera fait aucune distinction fondée sur le statut politique, juridique ou international du pays ou du territoire dont une personne
   140  est ressortissante, que ce pays ou territoire soit indépendant, sous tutelle, non autonome ou soumis à une limitation quelconque de souveraineté.`
   141  
   142  	sampleGerman = `Die Allgemeine Erklärung der Menschenrechte
   143  
   144  	Artikel 1.
   145  Alle Menschen sind frei und gleich an Würde und Rechten geboren.
   146  Sie sind mit Vernunft und Gewissen begabt und sollen einander im Geist der Brüderlichkeit begegnen.
   147  
   148  Artikel 2.
   149  Jeder hat Anspruch auf die in dieser Erklärung verkündeten Rechte und Freiheiten ohne irgendeinen Unterschied,
   150  etwa nach Rasse, Hautfarbe, Geschlecht, Sprache, Religion, politischer oder sonstiger Überzeugung, nationaler
   151  oder sozialer Herkunft, Vermögen, Geburt oder sonstigem Stand.
   152  Des weiteren darf kein Unterschied gemacht werden auf Grund der politischen, rechtlichen oder internationalen
   153  Stellung des Landes oder Gebiets, dem eine Person angehört, gleichgültig ob dieses unabhängig ist, unter Treuhandschaft steht,
   154  keine Selbstregierung besitzt oder sonst in seiner Souveränität eingeschränkt ist.`
   155  
   156  	sampleGreek = `ΟΙΚΟΥΜΕΝΙΚΗ ΔΙΑΚΗΡΥΞΗ ΓΙΑ ΤΑ ΑΝΘΡΩΠΙΝΑ ΔΙΚΑΙΩΜΑΤΑ
   157  
   158  ΑΡΘΡΟ 1
   159  Ολοι οι άνθρωποι γεννιούνται ελεύθεροι και ίσοι στην αξιοπρέπεια και τα δικαιώματα.
   160  Είναι προικισμένοι με λογική και συνείδηση, και οφείλουν να συμπεριφέρονται μεταξύ τους με πνεύμα αδελφοσύνης.
   161  
   162  ΑΡΘΡΟ 2
   163  Κάθε άνθρωπος δικαιούται να επικαλείται όλα τα δικαιώματα και όλες τις ελευθερίες που προκηρύσσει η παρούσα Διακήρυξη,
   164  χωρίς καμία απολύτως διάκριση, ειδικότερα ως προς τη φυλή, το χρώμα, το φύλο, τη γλώσσα, τις θρησκείες, τις πολιτικές
   165  ή οποιεσδήποτε άλλες πεποιθήσεις, την εθνική ή κοινωνική καταγωγή, την περιουσία, τη γέννηση ή οποιαδήποτε άλλη κατάσταση.`
   166  
   167  	sampleHebrew = `הצהרה האוניברסלית של זכויות האדם
   168  
   169  מאמר 1.
   170  כל בני האדם נולדים חופשיים ושווים בכבודם ובזכויותיהם.
   171  הם ניחנים בתבונה ובמצפון ועליהם לפעול זה כלפי זה ברוח אחווה.
   172  
   173  סעיף 2.
   174  כל אחד זכאי לכל הזכויות והחירויות המופיעות בהצהרה זו, ללא הבחנה מכל סוג שהוא,
   175  כגון גזע, צבע, מין, שפה, דת, דעה פוליטית או אחרת, מקור לאומי או חברתי, רכוש,
   176  לידה או מעמד אחר. יתר על כן, לא תיעשה הבחנה על בסיס הפוליטי, השיפוט או
   177  מעמד בינלאומי של המדינה או השטח שאדם משתייך אליו, בין אם זה עצמאי, אמון,
   178  לא ממשל עצמי או תחת כל מגבלה אחרת של ריבונות.`
   179  
   180  	sampleHindi = `मानव अधिकारों की सार्वभौम घोषणा
   181  
   182  लेख 1।
   183  सभी मनुष्यों का जन्म स्वतंत्र और समान सम्मान और अधिकार में हुआ है।
   184  वे तर्क और विवेक के साथ संपन्न होते हैं और भाईचारे की भावना से एक दूसरे के प्रति कार्य करना चाहिए।
   185  
   186  अनुच्छेद 2।
   187  हर कोई इस घोषणा में उल्लिखित सभी अधिकारों और स्वतंत्रता का हकदार है, किसी भी प्रकार का भेद किए बिना,
   188  जैसे कि जाति, रंग, लिंग, भाषा, धर्म, राजनीतिक या अन्य मत, राष्ट्रीय या सामाजिक मूल, संपत्ति,
   189  जन्म या अन्य स्थिति। इसके अलावा, राजनीतिक, अधिकार क्षेत्र या के आधार पर कोई भेद नहीं किया जाएगा
   190  देश या क्षेत्र की अंतर्राष्ट्रीय स्थिति, जो किसी व्यक्ति की है, चाहे वह स्वतंत्र हो, भरोसा हो,
   191  स्व-शासन या संप्रभुता के किसी अन्य सीमा के तहत।`
   192  
   193  	sampleHungarian = `Az Emberi Jogok Egyetemes Nyilatkozata
   194  
   195  1. cikk
   196  Minden. emberi lény szabadon születik és egyenlő méltósága és joga van. Az emberek, ésszel és lelkiismerettel bírván,
   197  egymással szemben testvéri szellemben kell hogy viseltessenek.
   198  
   199  2. cikk
   200  Mindenki, bármely megkülönböztetésre, nevezetesen fajra, színre, nemre, nyelvre, vallásra, politikai vagy bármely
   201  más véleményre, nemzeti vagy társadalmi eredetre, vagyonra, születésre, vagy bármely más körülményre való tekintet
   202  nélkül hivatkozhat a jelen Nyilatkozatban kinyilvánított összes jogokra és szabadságokra.
   203  Ezenfelül nem lehet semmiféle megkülönböztetést tenni annak az országnak, vagy területnek politikai, jogi vagy
   204  nemzetközi helyzete alapján sem, amelynek a személy állampolgára, aszerint, hogy az illető ország vagy terület független,
   205  gyámság alatt áll, nem autonóm vagy szuverenitása bármely vonatkozásban korlátozott.`
   206  
   207  	sampleIndonesian = `Pernyataan Umum tentang Hak-Hak Asasi Manusia
   208  
   209  Pasal 1
   210  Semua orang dilahirkan merdeka dan mempunyai martabat dan hak-hak yang sama.
   211  Mereka dikaruniai akal dan hati nurani dan hendaknya bergaul satu sama lain dalam semangat persaudaraan.
   212  
   213  Pasal 2
   214  Setiap orang berhak atas semua hak dan kebebasan-kebebasan yang tercantum di dalam Pernyataan ini tanpa perkecualian apapun,
   215  seperti ras, warna kulit, jenis kelamin, bahasa, agama, politik atau pendapat yang berlainan, asal mula kebangsaan atau
   216  kemasyarakatan, hak milik, kelahiran ataupun kedudukan lain.
   217  Di samping itu, tidak diperbolehkan melakukan perbedaan atas dasar kedudukan politik, hukum atau kedudukan internasional
   218  dari negara atau daerah dari mana seseorang berasal, baik dari negara yang merdeka, yang berbentuk wilayah-wilayah perwalian,
   219  jajahan atau yang berada di bawah batasan kedaulatan yang lain.`
   220  
   221  	sampleItalian = `DICHIARAZIONE UNIVERSALE DEI DIRITTI UMANI
   222  
   223  Articolo 1
   224  Tutti gli esseri umani nascono liberi ed eguali in dignità e diritti.
   225  Essi sono dotati di ragione e di coscienza e devono agire gli uni verso gli altri in spirito di fratellanza.
   226  
   227  Articolo 2
   228  Ad ogni individuo spettano tutti i diritti e tutte le libertà enunciate nella presente Dichiarazione,
   229  senza distinzione alcuna, per ragioni di razza, di colore, di sesso, di lingua, di religione,
   230  di opinione politica o di altro genere, di origine nazionale o sociale, di ricchezza, di nascita o di altra condizione.
   231  Nessuna distinzione sarà inoltre stabilita sulla base dello statuto politico, giuridico o internazionale del paese
   232  o del territorio cui una persona appartiene, sia indipendente, o sottoposto ad amministrazione fiduciaria o non autonomo,
   233  o soggetto a qualsiasi limitazione di sovranità.`
   234  
   235  	sampleJapanese = `『世界人権宣言』
   236  
   237  第1条
   238  
   239  すべての人間は、生まれながらにして自由であり、かつ、尊厳と権利と について平等である。人間は、理性と良心とを授けられており、互いに同 胞の精神をもって行動しなければならない。
   240  
   241  第2条
   242  
   243  すべて人は、人種、皮膚の色、性、言語、宗教、政治上その他の意見、   
   244  国民的もしくは社会的出身、財産、門地その他の地位又はこれに類するい   
   245  かなる自由による差別をも受けることなく、この宣言に掲げるすべての権   
   246  利と自由とを享有することができる。
   247  
   248  さらに、個人の属する国又は地域が独立国であると、信託統治地域で   
   249  あると、非自治地域であると、又は他のなんらかの主権制限の下にあると   
   250  を問わず、その国又は地域の政治上、管轄上又は国際上の地位に基ずくい   
   251  かなる差別もしてはならない。`
   252  
   253  	sampleKorean = `세 계 인 권 선 언
   254  
   255  제 1 조
   256  모든 인간은 태어날 때부터 자유로우며 그 존엄과 권리에 있어 동등하다. 인간은 천부적으로 이성과 양심을 부여받았으며 서로 형제애의 정신으로 행동하여야 한다.
   257  
   258  제 2 조
   259  모든 사람은 인종, 피부색, 성, 언어, 종교, 정치적 또는 기타의 견해, 민족적 또는 사회적 출신, 재산, 출생 또는 기타의 신분과 같은 어떠한 종류의 차별이 없이,
   260  이 선언에 규정된 모든 권리와 자유를 향유할 자격이 있다 . 더 나아가 개인이 속한 국가 또는 영토가 독립국 , 신탁통치지역 , 비자치지역이거나 또는 주권에 대한 여타의 제약을 받느냐에 관계없이 ,
   261  그 국가 또는 영토의 정치적, 법적 또는 국제적 지위에 근거하여 차별이 있어서는 아니된다 .`
   262  
   263  	sampleMarathi = `मानवाधिकारांची सार्वत्रिक घोषणा
   264  
   265  अनुच्छेद १.
   266  सर्व मानव स्वतंत्र आणि समान सन्मान आणि अधिकारात जन्माला येतात. ते तर्क आणि विवेकबुद्धीने संपन्न आहेत आणि त्यांनी बंधुत्वाच्या भावनेने एकमेकांशी वागले पाहिजे.
   267  
   268  अनुच्छेद २.
   269  या घोषणेमध्ये वंश, रंग, लिंग, भाषा, धर्म, राजकीय किंवा अन्य मत, राष्ट्रीय किंवा सामाजिक मूळ, मालमत्ता, जन्म किंवा इतर कोणत्याही प्रकारचे भेद न
   270  करता प्रत्येकजण या घोषणेत नमूद केलेले सर्व अधिकार आणि स्वातंत्र्य मिळविण्यास पात्र आहे. इतर स्थिती. याव्यतिरिक्त, एखादा देश ज्याच्या ताब्यात आहे तो
   271  देशाच्या राजकीय, कार्यकक्षात्मक किंवा आंतरराष्ट्रीय दर्जाच्या आधारे कोणताही भेदभाव केला जाणार नाही, तो स्वतंत्र, विश्वास असो, स्वराज्य असो किंवा
   272  सार्वभौमत्वाच्या कोणत्याही अन्य मर्यादेखाली असो.`
   273  
   274  	samplePersian = `اعلامیه جهانی حقوق بشر
   275  
   276  مقاله 1.
   277  همه انسانها آزاد و از نظر کرامت و حقوق برابر به دنیا می آیند.
   278  آنها از عقل و وجدان برخوردارند و باید با روحیه برادری نسبت به یکدیگر رفتار کنند.
   279  
   280  ماده 2
   281  هر کس بدون هیچ گونه تمایزی از کلیه حقوق و آزادی های مندرج در این بیانیه برخوردار است ،
   282  مانند نژاد ، رنگ ، جنس ، زبان ، مذهب ، عقاید سیاسی یا عقاید دیگر ، منشا national ملی یا اجتماعی ، دارایی ،
   283  تولد یا وضعیت دیگر بعلاوه ، هیچ تفکیکی نباید بر اساس حوزه های سیاسی ، قضایی یا قضایی قائل شود
   284  وضعیت بین المللی کشور یا سرزمینی که شخص به آن تعلق دارد ، خواه استقلال باشد ،
   285  غیر خود حاکم یا تحت هر محدودیت دیگری در حاکمیت.`
   286  
   287  	samplePolish = `POWSZECHNA DEKLARACJA PRAW CZŁOWIEKA
   288  
   289  Artykuł 1
   290  Wszyscy ludzie rodzą się wolni i równi pod względem swej godności i swych praw. Są oni obdarzeni rozumem i sumieniem
   291  i powinni postępować wobec innych w duchu braterstwa.
   292  
   293  Artykuł 2
   294  Każdy człowiek posiada wszystkie prawa i wolności zawarte w niniejszej Deklaracji bez względu na jakiekolwiek różnice rasy,
   295  koloru, płci, języka, wyznania, poglądów politycznych i innych, narodowości, pochodzenia społecznego, majątku,
   296  urodzenia lub jakiegokolwiek innego stanu.
   297  Nie wolno ponadto czynić żadnej różnicy w zależności od sytuacji politycznej, prawnej lub międzynarodowej kraju lub obszaru,
   298  do którego dana osoba przynależy, bez względu na to, czy dany kraj lub obszar jest niepodległy, czy też podlega systemowi
   299  powiernictwa, nie rządzi się samodzielnie lub jest w jakikolwiek sposób ograniczony w swej niepodległości.`
   300  
   301  	samplePortuguese = `Declaração Universal dos Direitos Humanos
   302  
   303  Artigo 1°
   304  Todos os seres humanos nascem livres e iguais em dignidade e em direitos. Dotados de razão e de consciência,
   305  devem agir uns para com os outros em espírito de fraternidade.	
   306  
   307  Artigo 2°
   308  Todos os seres humanos podem invocar os direitos e as liberdades proclamados na presente Declaração,
   309  sem distinção alguma, nomeadamente de raça, de cor, de sexo, de língua, de religião, de opinião política ou outra,
   310  de origem nacional ou social, de fortuna, de nascimento ou de qualquer outra situação.
   311  Além disso, não será feita nenhuma distinção fundada no estatuto político, jurídico ou internacional do país ou do
   312  território da naturalidade da pessoa, seja esse país ou território independente, sob tutela, autônomo ou sujeito
   313  a alguma limitação de soberania.`
   314  
   315  	sampleRussian = `Всеобщая декларация прав человека
   316  
   317  Статья 1
   318  Все люди рождаются свободными и равными в своем достоинстве и правах.
   319  Они наделены разумом и совестью и должны поступать в отношении друг друга в духе братства.
   320  
   321  Статья 2
   322  Каждый человек должен обладать всеми правами и всеми свободами, провозглашенными настоящей
   323  Декларацией, без какого бы то ни было различия, как-то в отношении расы, цвета кожи, пола,
   324  языка, религии, политических или иных убеждений, национального или социального происхождения,
   325  имущественного, сословного или иного положения.
   326  Кроме того, не должно проводиться никакого различия на основе политического, правового или
   327  международного статуса страны или территории, к которой человек принадлежит, независимо от того,
   328  является ли эта территория независимой, подопечной, несамоуправляющейся или как-либо иначе
   329  ограниченной в своем суверенитете.`
   330  
   331  	sampleSpanish = `Declaración Universal de Derechos Humanos
   332  
   333  Artículo 1.
   334  Todos los seres humanos nacen libres e iguales en dignidad y derechos y, dotados como están de razón y conciencia,
   335  deben comportarse fraternalmente los unos con los otros.
   336  
   337  Artículo 2.
   338  Toda persona tiene los derechos y libertades proclamados en esta Declaración, sin distinción alguna de raza, color,
   339  sexo, idioma, religión, opinión política o de cualquier otra índole, origen nacional o social, posición económica,
   340  nacimiento o cualquier otra condición. Además, no se hará distinción alguna fundada en la condición política,jurídica
   341  o internacional del país o territorio de cuya jurisdicción dependa una persona, tanto si se trata de un país independiente,
   342  como de un territorio bajo administración fiduciaria, no autónomo o sometido a cualquier otra limitación de soberanía.`
   343  
   344  	sampleSwahili = `UMOJA WA MATAIFA OFISI YA IDARA YA HABARI TAARIFA YA ULIMWENGU JUU YA HAKI ZA BINADAMU
   345  
   346  Kifungu cha 1.
   347  Watu wote wamezaliwa huru, hadhi na haki zao ni sawa. Wote wamejaliwa akili na dhamiri, hivyo yapasa watendeane kindugu.
   348  
   349  Kifungu cha 2.
   350  Kila mtu anastahili kuwa na haki zote na uhuru wote ambao umeelezwa katika Taarifa hii bila ubaguzi wo wote. Yaani bila kubaguana kwa rangi,
   351  taifa, wanaume kwa wanawake, dini, siasa, fikara, asili ya taifa la mtu, mali, kwa kizazi au kwa hali nyingine yo yote.
   352  Juu ya hayo usifanye ubaguzi kwa kutegemea siasa, utawala au kwa kutegemea uhusiano wa nchi fulani na mataifa mengine au nchi ya asili ya mtu,
   353  haidhuru nchi hiyo iwe inayojitawala, ya udhamini, isiyojitawala au inayotawaliwa na nchi nyingine kwa hali ya namna yo yote.`
   354  
   355  	sampleSwedish = `ALLMÄN FÖRKLARING OM DE MÄNSKLIGA RÄTTIGHETERNA
   356  
   357  Artikel 1.
   358  Alla människor äro födda fria och lika i värde och rättigheter.
   359  De äro utrustade med förnuft och samvete och böra handla gentemot varandra i en anda av broderskap.
   360  
   361  Artikel 2.
   362  Envar är berättigad till alla de fri- och rättigheter, som uttalas i denna förklaring, utan åtskillnad av något slag,
   363  såsom ras, hudfärg, kön, språk, religion, politisk eller annan uppfattning, nationellt eller socialt ursprung,
   364  egendom, börd eller ställning i övrigt.
   365  Ingen åtskillnad må vidare göras på grund av den politiska, juridiska eller internationella ställning, som intages 
   366  v det land eller område, till vilket en person hör, vare sig detta land eller område är oberoende, står under
   367  förvaltarskap, är icke-självstyrande eller är underkastat någon annan begränsning av sin suveränitet.`
   368  
   369  	sampleThai = `ปฏิญญาสากลว่าด้วยสิทธิมนุษยชน
   370  
   371  หัวข้อที่ 1.
   372  มนุษย์ทุกคนเกิดมาโดยเสรีและเท่าเทียมกันในศักดิ์ศรีและสิทธิ
   373  พวกเขากอปรด้วยเหตุผลและมโนธรรมและควรปฏิบัติต่อกันด้วยจิตวิญญาณแห่งความเป็นพี่น้องกัน
   374  
   375  ข้อ 2.
   376  ทุกคนมีสิทธิได้รับสิทธิและเสรีภาพทั้งหมดที่กำหนดไว้ในปฏิญญานี้โดยไม่มีความแตกต่างใด ๆ
   377  เช่นเชื้อชาติสีผิวเพศภาษาศาสนาความคิดเห็นทางการเมืองหรืออื่น ๆ ชาติกำเนิดหรือสังคมทรัพย์สิน
   378  การเกิดหรือสถานะอื่น ๆ นอกจากนี้จะไม่มีการสร้างความแตกต่างใด ๆ บนพื้นฐานของการเมืองเขตอำนาจศาลหรือ
   379  สถานะระหว่างประเทศของประเทศหรือดินแดนที่บุคคลเป็นอยู่ไม่ว่าจะเป็นอิสระความไว้วางใจ
   380  ไม่ปกครองตนเองหรืออยู่ภายใต้ข้อ จำกัด อื่นใดของอำนาจอธิปไตย`
   381  
   382  	sampleTurkish = `İnsan hakları  evrensel beyannamesi
   383  
   384  Madde 1
   385  Bütün insanlar hür, haysiyet ve haklar bakımından eşit doğarlar.
   386  Akıl ve vicdana sahiptirler ve birbirlerine karşı kardeşlik zihniyeti ile hareket etmelidirler.
   387  
   388  Madde 2
   389  Herkes, ırk, renk, cinsiyet, dil, din, siyasi veya diğer herhangi bir akide, milli veya içtimai menşe,
   390  servet, doğuş veya herhangi diğer bir fark gözetilmeksizin işbu Beyannamede ilan olunan tekmil haklardan
   391  ve bütün hürriyetlerden istifade edebilir.
   392  Bundan başka, bağımsız memleket uyruğu olsun, vesayet altında bulunan, gayri muhtar veya sair bir egemenlik
   393  kayıtlamasına tabi ülke uyruğu olsun, bir şahıs hakkında, uyruğu bulunduğu memleket veya ülkenin siyasi,
   394  hukuki veya milletlerarası statüsü bakımından hiçbir ayrılık gözetilmeyecektir.`
   395  
   396  	sampleUrdu = `انسانی حقوق کا عالمی اعلان
   397  
   398  آرٹیکل 1۔
   399  تمام انسان وقار اور حقوق میں آزاد اور برابر پیدا ہوئے ہیں۔
   400  وہ استدلال اور ضمیر کے مالک ہیں اور بھائی چارے کے جذبے سے ایک دوسرے کے ساتھ کام کریں۔
   401  
   402  آرٹیکل 2۔
   403  ہر شخص کسی بھی طرح کے امتیاز کے بغیر ، اس اعلامیے میں بیان کردہ تمام حقوق اور آزادی کا حقدار ہے ،
   404  جیسے نسل ، رنگ ، جنس ، زبان ، مذہب ، سیاسی یا دوسری رائے ، قومی یا معاشرتی اصل ، املاک ،
   405  پیدائش یا دوسری حیثیت مزید برآں ، سیاسی ، دائرہ اختیار یا کی بنیاد پر کوئی امتیاز نہیں برپا کیا جائے گا
   406  ملک یا علاقے کی بین الاقوامی حیثیت جس سے کسی شخص کا تعلق ہے ، خواہ وہ آزاد ہو ، اعتماد ،
   407  غیر خود حکمرانی یا خود مختاری کی کسی بھی دوسری حد کے تحت۔`
   408  
   409  	sampleVietnamese = `Tuyên ngôn nhân quyền
   410  
   411  Điều 1.
   412  Tất cả con người sinh ra đều tự do, bình đẳng về nhân phẩm và quyền.
   413  Họ được phú cho lý trí và lương tâm và nên hành động với nhau trong tinh thần anh em.
   414  
   415  Điều 2.
   416  Mọi người được hưởng tất cả các quyền và tự do được nêu trong Tuyên bố này, không phân biệt bất kỳ
   417  hình thức nào, chẳng hạn như chủng tộc, màu da, giới tính, ngôn ngữ, tôn giáo, chính trị hoặc quan
   418  điểm khác, nguồn gốc quốc gia hoặc xã hội, tài sản, nơi sinh hoặc trạng thái khác.
   419  Hơn nữa, không có sự phân biệt nào được thực hiện trên cơ sở địa vị chính trị, quyền tài phán hoặc
   420  quốc tế của quốc gia hoặc vùng lãnh thổ mà một người thuộc về, cho dù đó là quốc gia độc lập,
   421  tin cậy, không tự quản hay theo bất kỳ giới hạn chủ quyền nào khác.`
   422  )
   423  
   424  type sample struct {
   425  	fontName string
   426  	lang     string
   427  	text     string
   428  	rtl      bool
   429  }
   430  
   431  var langSamples = []sample{
   432  	{"UnifontMedium", "Arabic", sampleArabic, true},
   433  	{"UnifontMedium", "Armenian", sampleArmenian, false},
   434  	{"Roboto-Regular", "Azerbaijani", sampleAzerbaijani, false},
   435  	{"UnifontMedium", "Bangla", sampleBangla, false},
   436  	{"Roboto-Regular", "Belarusian", sampleBelarusian, false},
   437  	{"UnifontMedium", "Chinese simple", sampleChineseSimple, false},
   438  	{"UnifontMedium", "Chinese traditional", sampleChineseTraditional, false},
   439  	{"Roboto-Regular", "English", sampleEnglish, false},
   440  	{"Roboto-Regular", "French", sampleFrench, false},
   441  	{"Roboto-Regular", "German", sampleGerman, false},
   442  	{"Roboto-Regular", "Greek", sampleGreek, false},
   443  	{"UnifontMedium", "Hebrew", sampleHebrew, true},
   444  	{"UnifontMedium", "Hindi", sampleHindi, false},
   445  	{"Roboto-Regular", "Hungarian", sampleHungarian, false},
   446  	{"Roboto-Regular", "Indonesian", sampleIndonesian, false},
   447  	{"Roboto-Regular", "Italian", sampleItalian, false},
   448  	{"Unifont-JPMedium", "Japanese", sampleJapanese, false},
   449  	{"UnifontMedium", "Korean", sampleKorean, false},
   450  	{"UnifontMedium", "Marathi", sampleMarathi, false},
   451  	{"UnifontMedium", "Persian", samplePersian, true},
   452  	{"Roboto-Regular", "Portuguese", samplePortuguese, false},
   453  	{"Roboto-Regular", "Polish", samplePolish, false},
   454  	{"Roboto-Regular", "Russian", sampleRussian, false},
   455  	{"Roboto-Regular", "Spanish", sampleSpanish, false},
   456  	{"Roboto-Regular", "Swahili", sampleSwahili, false},
   457  	{"Roboto-Regular", "Swedish", sampleSwedish, false},
   458  	{"UnifontMedium", "Thai", sampleThai, false},
   459  	{"Roboto-Regular", "Turkish", sampleTurkish, false},
   460  	{"UnifontMedium", "Urdu", sampleUrdu, true},
   461  	{"Roboto-Regular", "Vietnamese", sampleVietnamese, false},
   462  }
   463  
   464  func renderArticle(xRefTable *model.XRefTable, p model.Page, row, col, lang int) {
   465  	mediaBox := p.MediaBox
   466  	w := mediaBox.Width() / 6
   467  	h := mediaBox.Height() / 5
   468  	region := types.RectForWidthAndHeight(float64(col)*w, float64(4-row)*h, w, h)
   469  	buf := p.Buf
   470  	sample := langSamples[lang]
   471  
   472  	if lang%2 > 0 {
   473  		draw.FillRectNoBorder(buf, region, color.SimpleColor{R: .75, G: .75, B: 1})
   474  	}
   475  
   476  	fontName := "Helvetica"
   477  	k := p.Fm.EnsureKey("Helvetica")
   478  
   479  	td := model.TextDescriptor{
   480  		Text:           sample.lang,
   481  		FontName:       fontName,
   482  		FontKey:        k,
   483  		FontSize:       24,
   484  		MLeft:          5,
   485  		MRight:         5,
   486  		MTop:           5,
   487  		MBot:           5,
   488  		Scale:          1.,
   489  		ScaleAbs:       false,
   490  		HAlign:         types.AlignLeft,
   491  		VAlign:         types.AlignMiddle,
   492  		RMode:          draw.RMFill,
   493  		StrokeCol:      color.NewSimpleColor(0x206A29),
   494  		FillCol:        color.NewSimpleColor(0x206A29),
   495  		ShowBackground: true,
   496  		BackgroundCol:  color.SimpleColor{R: 1., G: .98, B: .77},
   497  		ShowBorder:     true,
   498  		ShowLineBB:     false,
   499  		ShowTextBB:     true,
   500  		HairCross:      false,
   501  	}
   502  
   503  	model.WriteColumnAnchored(xRefTable, buf, mediaBox, region, td, types.TopLeft, 0)
   504  
   505  	fontName = sample.fontName
   506  	k = p.Fm.EnsureKey(fontName)
   507  
   508  	td = model.TextDescriptor{
   509  		Text:           sample.text,
   510  		FontName:       fontName,
   511  		Embed:          true,
   512  		RTL:            sample.rtl,
   513  		FontKey:        k,
   514  		FontSize:       16,
   515  		MLeft:          5,
   516  		MRight:         5,
   517  		MTop:           5,
   518  		MBot:           5,
   519  		X:              -1,
   520  		Y:              -1,
   521  		Scale:          .9,
   522  		ScaleAbs:       false,
   523  		HAlign:         types.AlignJustify,
   524  		VAlign:         types.AlignMiddle,
   525  		RMode:          draw.RMFill,
   526  		StrokeCol:      color.NewSimpleColor(0x206A29),
   527  		FillCol:        color.NewSimpleColor(0x206A29),
   528  		ShowBackground: true,
   529  		BackgroundCol:  color.SimpleColor{R: 1., G: .98, B: .77},
   530  		ShowBorder:     true,
   531  		ShowLineBB:     false,
   532  		ShowTextBB:     false,
   533  		HairCross:      false,
   534  	}
   535  
   536  	if sample.lang == "Japanese" {
   537  		model.WriteColumn(xRefTable, buf, mediaBox, region, td, mediaBox.Width()*.9)
   538  		return
   539  	}
   540  
   541  	if sample.lang == "Thai" {
   542  		td.HAlign = types.AlignLeft
   543  		model.WriteColumn(xRefTable, buf, mediaBox, region, td, mediaBox.Width()*.9)
   544  		return
   545  	}
   546  
   547  	model.WriteMultiLine(xRefTable, buf, mediaBox, region, td)
   548  }
   549  
   550  func TestUserFonts(t *testing.T) {
   551  	msg := "TestUserFonts"
   552  
   553  	w, h := 600., 600.
   554  	mediaBox := types.RectForDim(w, h)
   555  	p := model.NewPageWithBg(mediaBox, color.NewSimpleColor(0xbeded9))
   556  
   557  	xRefTable, err := pdfcpu.CreateDemoXRef()
   558  	if err != nil {
   559  		t.Fatalf("%s: %v\n", msg, err)
   560  	}
   561  
   562  	lang := 0
   563  	for row := 0; row < 5; row++ {
   564  		for col := 0; col < 6; col++ {
   565  			renderArticle(xRefTable, p, row, col, lang)
   566  			lang++
   567  		}
   568  	}
   569  
   570  	rootDict, err := xRefTable.Catalog()
   571  	if err != nil {
   572  		t.Fatalf("%s: %v\n", msg, err)
   573  	}
   574  	if err = pdfcpu.AddPageTreeWithSamplePage(xRefTable, rootDict, p); err != nil {
   575  		t.Fatalf("%s: %v\n", msg, err)
   576  	}
   577  	outDir := filepath.Join("..", "..", "samples", "basic")
   578  	outFile := filepath.Join(outDir, "UserFont_HumanRights.pdf")
   579  	createAndValidate(t, xRefTable, outFile, msg)
   580  }