[{"data":1,"prerenderedAt":1447},["ShallowReactive",2],{"blog-es-ipaex-gothic-gpdf":3},{"id":4,"title":5,"author":6,"body":9,"date":1411,"description":1412,"draft":1413,"extension":1414,"howTo":1415,"image":1437,"meta":1438,"navigation":86,"path":1439,"seo":1440,"stem":1441,"tags":1442,"updated":1437,"__hash__":1446},"blogEs/es/blog/009.ipaex-gothic-gpdf.md","¿Cómo uso IPAex Gothic en gpdf?",{"name":7,"url":8},"gpdf team","https://gpdf.dev",{"type":10,"value":11,"toc":1400},"minimark",[12,17,35,39,55,59,728,750,754,757,820,823,829,833,836,839,848,880,886,1176,1179,1183,1192,1220,1227,1230,1234,1319,1322,1326,1360,1364,1367,1384,1396],[13,14,16],"h2",{"id":15},"la-pregunta-en-otras-palabras","La pregunta, en otras palabras",[18,19,20,21,28,29,34],"p",{},"Quieres usar IPAex Gothic — la fuente Gothic proporcional que la ",[22,23,27],"a",{"href":24,"rel":25},"https://moji.or.jp/ipafont/",[26],"nofollow","Information-technology Promotion Agency"," (IPA) de Japón mantiene — en un documento ",[22,30,33],{"href":31,"rel":32},"https://github.com/gpdf-dev/gpdf",[26],"gpdf",". Motivos habituales: envíos de PDF a e-Tax, papeleo oficial frente al gobierno, o simplemente una guía de estilo que lleva con IPAex desde principios de 2010. Tres cosas confunden a la gente: qué archivo descargar, cómo lidiar con que no hay Bold, y qué te exige realmente la IPA Font License.",[13,36,38],{"id":37},"tldr","TL;DR",[18,40,41,42,46,47,50,51,54],{},"Registra ",[43,44,45],"code",{},"ipaexg.ttf"," con ",[43,48,49],{},"gpdf.WithFont(\"IPAexGothic\", bytes)",". Ponla como fuente por defecto. La negrita hay que sintetizarla con ",[43,52,53],{},"template.Bold()"," o emparejarla con IPAex Mincho, porque IPAex solo trae Regular. Conserva el texto de la licencia junto al binario.",[13,56,58],{"id":57},"ejemplo-completo","Ejemplo completo",[60,61,66],"pre",{"className":62,"code":63,"language":64,"meta":65,"style":65},"language-go shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","package main\n\nimport (\n    \"log\"\n    \"os\"\n\n    \"github.com/gpdf-dev/gpdf\"\n    \"github.com/gpdf-dev/gpdf/document\"\n    \"github.com/gpdf-dev/gpdf/template\"\n)\n\nfunc main() {\n    font, err := os.ReadFile(\"ipaexg.ttf\")\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    doc := gpdf.NewDocument(\n        gpdf.WithPageSize(gpdf.A4),\n        gpdf.WithMargins(document.UniformEdges(document.Mm(25))),\n        gpdf.WithFont(\"IPAexGothic\", font),\n        gpdf.WithDefaultFont(\"IPAexGothic\", 10.5),\n    )\n\n    page := doc.AddPage()\n    page.AutoRow(func(r *template.RowBuilder) {\n        r.Col(12, func(c *template.ColBuilder) {\n            c.Text(\"請求書\", template.FontSize(24), template.Bold())\n            c.Text(\"令和8年4月17日発行\")\n            c.Text(\"金額: ¥100,000 (税込)\")\n        })\n    })\n\n    data, err := doc.Generate()\n    if err != nil {\n        log.Fatal(err)\n    }\n    if err := os.WriteFile(\"invoice.pdf\", data, 0o644); err != nil {\n        log.Fatal(err)\n    }\n}\n","go","",[43,67,68,81,88,98,110,120,125,135,145,155,161,166,182,220,236,254,260,265,284,307,345,371,396,402,407,426,460,497,545,565,585,591,597,602,623,636,651,656,702,717,722],{"__ignoreMap":65},[69,70,73,77],"span",{"class":71,"line":72},"line",1,[69,74,76],{"class":75},"sMK4o","package",[69,78,80],{"class":79},"sBMFI"," main\n",[69,82,84],{"class":71,"line":83},2,[69,85,87],{"emptyLinePlaceholder":86},true,"\n",[69,89,91,95],{"class":71,"line":90},3,[69,92,94],{"class":93},"s7zQu","import",[69,96,97],{"class":75}," (\n",[69,99,101,104,107],{"class":71,"line":100},4,[69,102,103],{"class":75},"    \"",[69,105,106],{"class":79},"log",[69,108,109],{"class":75},"\"\n",[69,111,113,115,118],{"class":71,"line":112},5,[69,114,103],{"class":75},[69,116,117],{"class":79},"os",[69,119,109],{"class":75},[69,121,123],{"class":71,"line":122},6,[69,124,87],{"emptyLinePlaceholder":86},[69,126,128,130,133],{"class":71,"line":127},7,[69,129,103],{"class":75},[69,131,132],{"class":79},"github.com/gpdf-dev/gpdf",[69,134,109],{"class":75},[69,136,138,140,143],{"class":71,"line":137},8,[69,139,103],{"class":75},[69,141,142],{"class":79},"github.com/gpdf-dev/gpdf/document",[69,144,109],{"class":75},[69,146,148,150,153],{"class":71,"line":147},9,[69,149,103],{"class":75},[69,151,152],{"class":79},"github.com/gpdf-dev/gpdf/template",[69,154,109],{"class":75},[69,156,158],{"class":71,"line":157},10,[69,159,160],{"class":75},")\n",[69,162,164],{"class":71,"line":163},11,[69,165,87],{"emptyLinePlaceholder":86},[69,167,169,172,176,179],{"class":71,"line":168},12,[69,170,171],{"class":75},"func",[69,173,175],{"class":174},"s2Zo4"," main",[69,177,178],{"class":75},"()",[69,180,181],{"class":75}," {\n",[69,183,185,189,192,195,198,201,204,207,210,213,216,218],{"class":71,"line":184},13,[69,186,188],{"class":187},"sTEyZ","    font",[69,190,191],{"class":75},",",[69,193,194],{"class":187}," err ",[69,196,197],{"class":75},":=",[69,199,200],{"class":187}," os",[69,202,203],{"class":75},".",[69,205,206],{"class":174},"ReadFile",[69,208,209],{"class":75},"(",[69,211,212],{"class":75},"\"",[69,214,45],{"class":215},"sfazB",[69,217,212],{"class":75},[69,219,160],{"class":75},[69,221,223,226,228,231,234],{"class":71,"line":222},14,[69,224,225],{"class":93},"    if",[69,227,194],{"class":187},[69,229,230],{"class":75},"!=",[69,232,233],{"class":75}," nil",[69,235,181],{"class":75},[69,237,239,242,244,247,249,252],{"class":71,"line":238},15,[69,240,241],{"class":187},"        log",[69,243,203],{"class":75},[69,245,246],{"class":174},"Fatal",[69,248,209],{"class":75},[69,250,251],{"class":187},"err",[69,253,160],{"class":75},[69,255,257],{"class":71,"line":256},16,[69,258,259],{"class":75},"    }\n",[69,261,263],{"class":71,"line":262},17,[69,264,87],{"emptyLinePlaceholder":86},[69,266,268,271,273,276,278,281],{"class":71,"line":267},18,[69,269,270],{"class":187},"    doc ",[69,272,197],{"class":75},[69,274,275],{"class":187}," gpdf",[69,277,203],{"class":75},[69,279,280],{"class":174},"NewDocument",[69,282,283],{"class":75},"(\n",[69,285,287,290,292,295,297,299,301,304],{"class":71,"line":286},19,[69,288,289],{"class":187},"        gpdf",[69,291,203],{"class":75},[69,293,294],{"class":174},"WithPageSize",[69,296,209],{"class":75},[69,298,33],{"class":187},[69,300,203],{"class":75},[69,302,303],{"class":187},"A4",[69,305,306],{"class":75},"),\n",[69,308,310,312,314,317,319,322,324,327,329,331,333,336,338,342],{"class":71,"line":309},20,[69,311,289],{"class":187},[69,313,203],{"class":75},[69,315,316],{"class":174},"WithMargins",[69,318,209],{"class":75},[69,320,321],{"class":187},"document",[69,323,203],{"class":75},[69,325,326],{"class":174},"UniformEdges",[69,328,209],{"class":75},[69,330,321],{"class":187},[69,332,203],{"class":75},[69,334,335],{"class":174},"Mm",[69,337,209],{"class":75},[69,339,341],{"class":340},"sbssI","25",[69,343,344],{"class":75},"))),\n",[69,346,348,350,352,355,357,359,362,364,366,369],{"class":71,"line":347},21,[69,349,289],{"class":187},[69,351,203],{"class":75},[69,353,354],{"class":174},"WithFont",[69,356,209],{"class":75},[69,358,212],{"class":75},[69,360,361],{"class":215},"IPAexGothic",[69,363,212],{"class":75},[69,365,191],{"class":75},[69,367,368],{"class":187}," font",[69,370,306],{"class":75},[69,372,374,376,378,381,383,385,387,389,391,394],{"class":71,"line":373},22,[69,375,289],{"class":187},[69,377,203],{"class":75},[69,379,380],{"class":174},"WithDefaultFont",[69,382,209],{"class":75},[69,384,212],{"class":75},[69,386,361],{"class":215},[69,388,212],{"class":75},[69,390,191],{"class":75},[69,392,393],{"class":340}," 10.5",[69,395,306],{"class":75},[69,397,399],{"class":71,"line":398},23,[69,400,401],{"class":75},"    )\n",[69,403,405],{"class":71,"line":404},24,[69,406,87],{"emptyLinePlaceholder":86},[69,408,410,413,415,418,420,423],{"class":71,"line":409},25,[69,411,412],{"class":187},"    page ",[69,414,197],{"class":75},[69,416,417],{"class":187}," doc",[69,419,203],{"class":75},[69,421,422],{"class":174},"AddPage",[69,424,425],{"class":75},"()\n",[69,427,429,432,434,437,440,444,447,450,452,455,458],{"class":71,"line":428},26,[69,430,431],{"class":187},"    page",[69,433,203],{"class":75},[69,435,436],{"class":174},"AutoRow",[69,438,439],{"class":75},"(func(",[69,441,443],{"class":442},"sHdIc","r",[69,445,446],{"class":75}," *",[69,448,449],{"class":79},"template",[69,451,203],{"class":75},[69,453,454],{"class":79},"RowBuilder",[69,456,457],{"class":75},")",[69,459,181],{"class":75},[69,461,463,466,468,471,473,476,478,481,484,486,488,490,493,495],{"class":71,"line":462},27,[69,464,465],{"class":187},"        r",[69,467,203],{"class":75},[69,469,470],{"class":174},"Col",[69,472,209],{"class":75},[69,474,475],{"class":340},"12",[69,477,191],{"class":75},[69,479,480],{"class":75}," func(",[69,482,483],{"class":442},"c",[69,485,446],{"class":75},[69,487,449],{"class":79},[69,489,203],{"class":75},[69,491,492],{"class":79},"ColBuilder",[69,494,457],{"class":75},[69,496,181],{"class":75},[69,498,500,503,505,508,510,512,515,517,519,522,524,527,529,532,535,537,539,542],{"class":71,"line":499},28,[69,501,502],{"class":187},"            c",[69,504,203],{"class":75},[69,506,507],{"class":174},"Text",[69,509,209],{"class":75},[69,511,212],{"class":75},[69,513,514],{"class":215},"請求書",[69,516,212],{"class":75},[69,518,191],{"class":75},[69,520,521],{"class":187}," template",[69,523,203],{"class":75},[69,525,526],{"class":174},"FontSize",[69,528,209],{"class":75},[69,530,531],{"class":340},"24",[69,533,534],{"class":75},"),",[69,536,521],{"class":187},[69,538,203],{"class":75},[69,540,541],{"class":174},"Bold",[69,543,544],{"class":75},"())\n",[69,546,548,550,552,554,556,558,561,563],{"class":71,"line":547},29,[69,549,502],{"class":187},[69,551,203],{"class":75},[69,553,507],{"class":174},[69,555,209],{"class":75},[69,557,212],{"class":75},[69,559,560],{"class":215},"令和8年4月17日発行",[69,562,212],{"class":75},[69,564,160],{"class":75},[69,566,568,570,572,574,576,578,581,583],{"class":71,"line":567},30,[69,569,502],{"class":187},[69,571,203],{"class":75},[69,573,507],{"class":174},[69,575,209],{"class":75},[69,577,212],{"class":75},[69,579,580],{"class":215},"金額: ¥100,000 (税込)",[69,582,212],{"class":75},[69,584,160],{"class":75},[69,586,588],{"class":71,"line":587},31,[69,589,590],{"class":75},"        })\n",[69,592,594],{"class":71,"line":593},32,[69,595,596],{"class":75},"    })\n",[69,598,600],{"class":71,"line":599},33,[69,601,87],{"emptyLinePlaceholder":86},[69,603,605,608,610,612,614,616,618,621],{"class":71,"line":604},34,[69,606,607],{"class":187},"    data",[69,609,191],{"class":75},[69,611,194],{"class":187},[69,613,197],{"class":75},[69,615,417],{"class":187},[69,617,203],{"class":75},[69,619,620],{"class":174},"Generate",[69,622,425],{"class":75},[69,624,626,628,630,632,634],{"class":71,"line":625},35,[69,627,225],{"class":93},[69,629,194],{"class":187},[69,631,230],{"class":75},[69,633,233],{"class":75},[69,635,181],{"class":75},[69,637,639,641,643,645,647,649],{"class":71,"line":638},36,[69,640,241],{"class":187},[69,642,203],{"class":75},[69,644,246],{"class":174},[69,646,209],{"class":75},[69,648,251],{"class":187},[69,650,160],{"class":75},[69,652,654],{"class":71,"line":653},37,[69,655,259],{"class":75},[69,657,659,661,663,665,667,669,672,674,676,679,681,683,686,688,691,694,696,698,700],{"class":71,"line":658},38,[69,660,225],{"class":93},[69,662,194],{"class":187},[69,664,197],{"class":75},[69,666,200],{"class":187},[69,668,203],{"class":75},[69,670,671],{"class":174},"WriteFile",[69,673,209],{"class":75},[69,675,212],{"class":75},[69,677,678],{"class":215},"invoice.pdf",[69,680,212],{"class":75},[69,682,191],{"class":75},[69,684,685],{"class":187}," data",[69,687,191],{"class":75},[69,689,690],{"class":340}," 0o644",[69,692,693],{"class":75},");",[69,695,194],{"class":187},[69,697,230],{"class":75},[69,699,233],{"class":75},[69,701,181],{"class":75},[69,703,705,707,709,711,713,715],{"class":71,"line":704},39,[69,706,241],{"class":187},[69,708,203],{"class":75},[69,710,246],{"class":174},[69,712,209],{"class":75},[69,714,251],{"class":187},[69,716,160],{"class":75},[69,718,720],{"class":71,"line":719},40,[69,721,259],{"class":75},[69,723,725],{"class":71,"line":724},41,[69,726,727],{"class":75},"}\n",[18,729,730,731,734,735,739,740,742,743,746,747,203],{},"Descarga ",[43,732,733],{},"IPAex00401.zip"," desde ",[22,736,738],{"href":24,"rel":737},[26],"moji.or.jp/ipafont",", extrae ",[43,741,45],{},", ponlo junto a ",[43,744,745],{},"main.go"," y corre ",[43,748,749],{},"go run main.go",[13,751,753],{"id":752},"qué-archivo-ipa-es-el-correcto","Qué archivo IPA es el correcto",[18,755,756],{},"Al abrir el zip encuentras tres TTFs más una licencia. La gente los confunde constantemente:",[758,759,760,773],"table",{},[761,762,763],"thead",{},[764,765,766,770],"tr",{},[767,768,769],"th",{},"Archivo",[767,771,772],{},"Qué es",[774,775,776,790,803],"tbody",{},[764,777,778,783],{},[779,780,781],"td",{},[43,782,45],{},[779,784,785,789],{},[786,787,788],"strong",{},"IPAex Gothic"," — sans-serif, latino proporcional. Para la mayoría de documentos.",[764,791,792,797],{},[779,793,794],{},[43,795,796],{},"ipaexm.ttf",[779,798,799,802],{},[786,800,801],{},"IPAex Mincho"," — serif, latino proporcional. Cuerpo de textos largos o emparejada con Gothic para énfasis.",[764,804,805,810],{},[779,806,807],{},[43,808,809],{},"ipag.ttf",[779,811,812,815,816,819],{},[786,813,814],{},"IPA Gothic"," (sin \"ex\") — sans-serif, ",[786,817,818],{},"latino monoespaciado",". Rara vez es lo que quieres hoy.",[18,821,822],{},"La \"ex\" de IPAex significa \"extended proportional\". Las fuentes IPA originales ponían los caracteres latinos sobre rejillas CJK de ancho fijo, lo que hacía que el texto mixto J/E se viera estirado. IPAex lo corrige haciendo proporcionales los caracteres latinos mientras mantiene los CJK sobre su rejilla. Para cualquier documento con palabras prestadas del inglés, URLs o números — es decir, básicamente todo documento de negocio en Japón — quieres IPAex.",[18,824,825,826,828],{},"Si heredas un proyecto que usa ",[43,827,809],{}," porque el desarrollador que eligió la fuente lo hizo antes de que existiera IPAex (IPA Gothic original: 2003, IPAex: 2010), el cambio es un swap de archivo. Mismo nombre de familia, todo igual.",[13,830,832],{"id":831},"sin-archivo-bold-ahora-qué","Sin archivo Bold — ¿ahora qué?",[18,834,835],{},"IPAex publica exactamente un peso por familia: Regular. Es inusual comparado con los nueve pesos de Noto Sans JP, y es la razón principal por la que la gente mira IPAex y decide que no funcionará para su diseño.",[18,837,838],{},"Dos formas de manejarlo en gpdf:",[18,840,841,844,845,847],{},[786,842,843],{},"Negrita sintetizada."," ",[43,846,53],{}," superpone un trazo sobre los glifos Regular. Tipográficamente es un atajo — las negritas reales tienen contornos redibujados con trazos más gruesos, no Regular calcado dos veces. Pero para encabezados de facturas y etiquetas de tabla a 10 pt o más, la negrita sintetizada es indistinguible para la mayoría de lectores:",[60,849,851],{"className":62,"code":850,"language":64,"meta":65,"style":65},"c.Text(\"合計金額\", template.Bold())\n",[43,852,853],{"__ignoreMap":65},[69,854,855,857,859,861,863,865,868,870,872,874,876,878],{"class":71,"line":72},[69,856,483],{"class":187},[69,858,203],{"class":75},[69,860,507],{"class":174},[69,862,209],{"class":75},[69,864,212],{"class":75},[69,866,867],{"class":215},"合計金額",[69,869,212],{"class":75},[69,871,191],{"class":75},[69,873,521],{"class":187},[69,875,203],{"class":75},[69,877,541],{"class":174},[69,879,544],{"class":75},[18,881,882,885],{},[786,883,884],{},"Emparejar con IPAex Mincho."," El recurso clásico de la tipografía japonesa para el énfasis no es poner negrita — es alternar serif/sans. Registra ambas familias:",[60,887,889],{"className":62,"code":888,"language":64,"meta":65,"style":65},"gothic, _ := os.ReadFile(\"ipaexg.ttf\")\nmincho, _ := os.ReadFile(\"ipaexm.ttf\")\n\ndoc := gpdf.NewDocument(\n    gpdf.WithFont(\"IPAexGothic\", gothic),\n    gpdf.WithFont(\"IPAexMincho\", mincho),\n    gpdf.WithDefaultFont(\"IPAexGothic\", 10.5),\n)\n\npage.AutoRow(func(r *template.RowBuilder) {\n    r.Col(12, func(c *template.ColBuilder) {\n        c.Text(\"請求書\", template.FontFamily(\"IPAexMincho\"), template.FontSize(24))\n        c.Text(\"ご請求内容は下記の通りです。\")\n    })\n})\n",[43,890,891,919,946,950,965,989,1013,1035,1039,1043,1068,1099,1148,1167,1171],{"__ignoreMap":65},[69,892,893,896,898,901,903,905,907,909,911,913,915,917],{"class":71,"line":72},[69,894,895],{"class":187},"gothic",[69,897,191],{"class":75},[69,899,900],{"class":187}," _ ",[69,902,197],{"class":75},[69,904,200],{"class":187},[69,906,203],{"class":75},[69,908,206],{"class":174},[69,910,209],{"class":75},[69,912,212],{"class":75},[69,914,45],{"class":215},[69,916,212],{"class":75},[69,918,160],{"class":75},[69,920,921,924,926,928,930,932,934,936,938,940,942,944],{"class":71,"line":83},[69,922,923],{"class":187},"mincho",[69,925,191],{"class":75},[69,927,900],{"class":187},[69,929,197],{"class":75},[69,931,200],{"class":187},[69,933,203],{"class":75},[69,935,206],{"class":174},[69,937,209],{"class":75},[69,939,212],{"class":75},[69,941,796],{"class":215},[69,943,212],{"class":75},[69,945,160],{"class":75},[69,947,948],{"class":71,"line":90},[69,949,87],{"emptyLinePlaceholder":86},[69,951,952,955,957,959,961,963],{"class":71,"line":100},[69,953,954],{"class":187},"doc ",[69,956,197],{"class":75},[69,958,275],{"class":187},[69,960,203],{"class":75},[69,962,280],{"class":174},[69,964,283],{"class":75},[69,966,967,970,972,974,976,978,980,982,984,987],{"class":71,"line":112},[69,968,969],{"class":187},"    gpdf",[69,971,203],{"class":75},[69,973,354],{"class":174},[69,975,209],{"class":75},[69,977,212],{"class":75},[69,979,361],{"class":215},[69,981,212],{"class":75},[69,983,191],{"class":75},[69,985,986],{"class":187}," gothic",[69,988,306],{"class":75},[69,990,991,993,995,997,999,1001,1004,1006,1008,1011],{"class":71,"line":122},[69,992,969],{"class":187},[69,994,203],{"class":75},[69,996,354],{"class":174},[69,998,209],{"class":75},[69,1000,212],{"class":75},[69,1002,1003],{"class":215},"IPAexMincho",[69,1005,212],{"class":75},[69,1007,191],{"class":75},[69,1009,1010],{"class":187}," mincho",[69,1012,306],{"class":75},[69,1014,1015,1017,1019,1021,1023,1025,1027,1029,1031,1033],{"class":71,"line":127},[69,1016,969],{"class":187},[69,1018,203],{"class":75},[69,1020,380],{"class":174},[69,1022,209],{"class":75},[69,1024,212],{"class":75},[69,1026,361],{"class":215},[69,1028,212],{"class":75},[69,1030,191],{"class":75},[69,1032,393],{"class":340},[69,1034,306],{"class":75},[69,1036,1037],{"class":71,"line":137},[69,1038,160],{"class":75},[69,1040,1041],{"class":71,"line":147},[69,1042,87],{"emptyLinePlaceholder":86},[69,1044,1045,1048,1050,1052,1054,1056,1058,1060,1062,1064,1066],{"class":71,"line":157},[69,1046,1047],{"class":187},"page",[69,1049,203],{"class":75},[69,1051,436],{"class":174},[69,1053,439],{"class":75},[69,1055,443],{"class":442},[69,1057,446],{"class":75},[69,1059,449],{"class":79},[69,1061,203],{"class":75},[69,1063,454],{"class":79},[69,1065,457],{"class":75},[69,1067,181],{"class":75},[69,1069,1070,1073,1075,1077,1079,1081,1083,1085,1087,1089,1091,1093,1095,1097],{"class":71,"line":163},[69,1071,1072],{"class":187},"    r",[69,1074,203],{"class":75},[69,1076,470],{"class":174},[69,1078,209],{"class":75},[69,1080,475],{"class":340},[69,1082,191],{"class":75},[69,1084,480],{"class":75},[69,1086,483],{"class":442},[69,1088,446],{"class":75},[69,1090,449],{"class":79},[69,1092,203],{"class":75},[69,1094,492],{"class":79},[69,1096,457],{"class":75},[69,1098,181],{"class":75},[69,1100,1101,1104,1106,1108,1110,1112,1114,1116,1118,1120,1122,1125,1127,1129,1131,1133,1135,1137,1139,1141,1143,1145],{"class":71,"line":168},[69,1102,1103],{"class":187},"        c",[69,1105,203],{"class":75},[69,1107,507],{"class":174},[69,1109,209],{"class":75},[69,1111,212],{"class":75},[69,1113,514],{"class":215},[69,1115,212],{"class":75},[69,1117,191],{"class":75},[69,1119,521],{"class":187},[69,1121,203],{"class":75},[69,1123,1124],{"class":174},"FontFamily",[69,1126,209],{"class":75},[69,1128,212],{"class":75},[69,1130,1003],{"class":215},[69,1132,212],{"class":75},[69,1134,534],{"class":75},[69,1136,521],{"class":187},[69,1138,203],{"class":75},[69,1140,526],{"class":174},[69,1142,209],{"class":75},[69,1144,531],{"class":340},[69,1146,1147],{"class":75},"))\n",[69,1149,1150,1152,1154,1156,1158,1160,1163,1165],{"class":71,"line":184},[69,1151,1103],{"class":187},[69,1153,203],{"class":75},[69,1155,507],{"class":174},[69,1157,209],{"class":75},[69,1159,212],{"class":75},[69,1161,1162],{"class":215},"ご請求内容は下記の通りです。",[69,1164,212],{"class":75},[69,1166,160],{"class":75},[69,1168,1169],{"class":71,"line":222},[69,1170,596],{"class":75},[69,1172,1173],{"class":71,"line":238},[69,1174,1175],{"class":75},"})\n",[18,1177,1178],{},"Es la estética que se ve en invitaciones de boda e informes formales japoneses: Mincho para títulos, Gothic para el cuerpo. Si tu documento va a una oficina gubernamental, esa es probablemente la combinación esperada.",[13,1180,1182],{"id":1181},"la-ipa-font-license-en-breve","La IPA Font License, en breve",[18,1184,1185,1186,1191],{},"IPAex no es SIL OFL. Es la ",[22,1187,1190],{"href":1188,"rel":1189},"https://opensource.org/licenses/IPA",[26],"IPA Font License Agreement v1.0",", aprobada por OSI y en general permisiva, pero con dos exigencias que conviene nombrar:",[1193,1194,1195,1210],"ol",{},[1196,1197,1198,1201,1202,1205,1206,1209],"li",{},[786,1199,1200],{},"Preserva el texto de la licencia"," allí donde distribuyas el binario de la fuente. Si haces ",[43,1203,1204],{},"//go:embed"," del TTF, empaqueta también el archivo de licencia. Un ",[43,1207,1208],{},"LICENSES/IPA-FONT-1.0.txt"," en la raíz del proyecto cubre la mayoría de los casos.",[1196,1211,1212,1215,1216,1219],{},[786,1213,1214],{},"No renombres la fuente."," Si modificas el TTF en sí y lo redistribuyes, el derivado debe llevar un nombre distinto (que no contenga \"IPA\" ni \"IPAex\"). Ojo: esta restricción ",[786,1217,1218],{},"no"," aplica al subset de glifos en tiempo de render. El artículo 3.4 de la licencia exime explícitamente a los documentos de salida creados con la fuente de la restricción de nombres.",[18,1221,1222,1223,1226],{},"Es decir: el subset que gpdf hace en ",[43,1224,1225],{},"doc.Generate()"," está bien. El subset de la fuente que queda embebido en tu PDF no necesita otro nombre y no activa las cláusulas de \"Derivative Font Program\". Estás creando un documento, no redistribuyendo una fuente.",[18,1228,1229],{},"Un detalle para quienes contribuyan al propio gpdf: evitamos incluir IPAex en el repo de gpdf (los tests de golden usan fuentes SIL OFL como Noto) precisamente para que los usuarios río abajo no tengan que pensar en compatibilidad de licencia con el LICENSE raíz de su proyecto. Si usas IPAex en tu aplicación, esa es decisión de tu proyecto, no nuestra.",[13,1231,1233],{"id":1232},"cuándo-elegir-ipaex-en-vez-de-noto-sans-jp","Cuándo elegir IPAex en vez de Noto Sans JP",[758,1235,1236,1248],{},[761,1237,1238],{},[764,1239,1240,1243,1245],{},[767,1241,1242],{},"Dimensión",[767,1244,788],{},[767,1246,1247],{},"Noto Sans JP",[774,1249,1250,1261,1272,1283,1297,1308],{},[764,1251,1252,1255,1258],{},[779,1253,1254],{},"Pesos publicados",[779,1256,1257],{},"1 (Regular)",[779,1259,1260],{},"9 (Thin → Black)",[764,1262,1263,1266,1269],{},[779,1264,1265],{},"Licencia",[779,1267,1268],{},"IPA Font License v1.0",[779,1270,1271],{},"SIL OFL 1.1",[764,1273,1274,1277,1280],{},[779,1275,1276],{},"Tratamiento latino",[779,1278,1279],{},"Proporcional (IPAex) o monoespaciado (IPA)",[779,1281,1282],{},"Proporcional",[764,1284,1285,1288,1294],{},[779,1286,1287],{},"Preinstalada en",[779,1289,1290,1291],{},"Algunas distros Linux japonesas, TeX Live ",[43,1292,1293],{},"ptex-fonts",[779,1295,1296],{},"Android, ChromeOS",[764,1298,1299,1302,1305],{},[779,1300,1301],{},"Público típico",[779,1303,1304],{},"Gobierno, legal y académico japonés",[779,1306,1307],{},"Web de consumo, internacional",[764,1309,1310,1313,1316],{},[779,1311,1312],{},"Tamaño",[779,1314,1315],{},"7.5 MB (Gothic)",[779,1317,1318],{},"5 MB (solo Regular)",[18,1320,1321],{},"Elige IPAex cuando tu salida cruce una frontera institucional japonesa — envíos de PDF a e-Tax, escritos a tribunales, artículos para una revista japonesa — porque los evaluadores, revisores y herramientas OCR de esos ecosistemas están calibrados contra IPA. Para todo lo demás, Noto Sans JP. Visualmente rinden muy parecido; la elección es de encaje con el ecosistema, no estética.",[13,1323,1325],{"id":1324},"lecturas-relacionadas","Lecturas relacionadas",[1327,1328,1329,1336,1343,1350],"ul",{},[1196,1330,1331,1335],{},[22,1332,1334],{"href":1333},"/es/blog/embed-japanese-font","¿Cómo incrusto una fuente japonesa en gpdf?"," — la receta general, vale para cualquier TTF CJK",[1196,1337,1338,1342],{},[22,1339,1341],{"href":1340},"/es/blog/noto-sans-jp-with-gpdf","¿Cómo uso Noto Sans JP con gpdf?"," — la alternativa SIL OFL con nueve pesos",[1196,1344,1345,1349],{},[22,1346,1348],{"href":1347},"/es/blog/tofu-boxes-japanese","¿Por qué mi PDF muestra rectángulos en lugar de japonés?"," — troubleshooting cuando los glifos no aparecen",[1196,1351,1352,1357,1358],{},[22,1353,1356],{"href":1354,"rel":1355},"https://gpdf.dev/es/docs/guide/fonts",[26],"Guía de fuentes"," — referencia completa de ",[43,1359,354],{},[13,1361,1363],{"id":1362},"prueba-gpdf","Prueba gpdf",[18,1365,1366],{},"gpdf es una librería Go para generar PDFs. Licencia MIT, cero dependencias externas, soporte CJK nativo.",[60,1368,1372],{"className":1369,"code":1370,"language":1371,"meta":65,"style":65},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","go get github.com/gpdf-dev/gpdf\n","bash",[43,1373,1374],{"__ignoreMap":65},[69,1375,1376,1378,1381],{"class":71,"line":72},[69,1377,64],{"class":79},[69,1379,1380],{"class":215}," get",[69,1382,1383],{"class":215}," github.com/gpdf-dev/gpdf\n",[18,1385,1386,1390,1391],{},[22,1387,1389],{"href":31,"rel":1388},[26],"⭐ Star en GitHub"," · ",[22,1392,1395],{"href":1393,"rel":1394},"https://gpdf.dev/es/docs/quickstart",[26],"Leer los docs",[1397,1398,1399],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":65,"searchDepth":83,"depth":83,"links":1401},[1402,1403,1404,1405,1406,1407,1408,1409,1410],{"id":15,"depth":83,"text":16},{"id":37,"depth":83,"text":38},{"id":57,"depth":83,"text":58},{"id":752,"depth":83,"text":753},{"id":831,"depth":83,"text":832},{"id":1181,"depth":83,"text":1182},{"id":1232,"depth":83,"text":1233},{"id":1324,"depth":83,"text":1325},{"id":1362,"depth":83,"text":1363},"2026-04-17","Registra ipaexg.ttf con gpdf.WithFont. IPAex Gothic trae solo un peso Regular bajo la IPA Font License: la negrita se sintetiza o se empareja con Mincho.",false,"md",{"name":1416,"totalTime":1417,"tools":1418,"steps":1421},"Usar IPAex Gothic como fuente por defecto en un documento gpdf","PT10M",[1419,1420],"Go 1.22+","ipaexg.ttf (IPAex Gothic v4.01 de moji.or.jp)",[1422,1425,1428,1431,1434],{"name":1423,"text":1424},"Descarga el paquete IPAex desde moji.or.jp","Baja IPAex00401.zip desde moji.or.jp/ipafont. Descomprime y conserva ipaexg.ttf junto con el archivo de texto del IPA Font License Agreement v1.0 que viene incluido.",{"name":1426,"text":1427},"Carga los bytes del TTF","Al arrancar el programa, usa os.ReadFile(\"ipaexg.ttf\") para cargar la fuente en un []byte. Para despliegues en contenedor, //go:embed mantiene la fuente dentro del binario Go.",{"name":1429,"text":1430},"Registra la fuente al construir el documento","Pasa gpdf.WithFont(\"IPAexGothic\", fontBytes) y gpdf.WithDefaultFont(\"IPAexGothic\", 10.5) a gpdf.NewDocument. 10.5 pt coincide con el tamaño por defecto de Word para documentos japoneses.",{"name":1432,"text":1433},"Maneja la negrita sin archivo Bold","IPAex Gothic no tiene variante Bold. Sintetiza la negrita con template.Bold() (gpdf superpone un trazo de 0.4 pt) o registra IPAex Mincho como familia aparte para el énfasis.",{"name":1435,"text":1436},"Mantén la licencia junto a tu distribución","La IPA Font License v1.0 exige preservar el texto de la licencia donde sea que viaje el binario de la fuente. Si haces //go:embed del TTF, empaqueta también LICENSES/IPA-FONT-1.0.txt y referéncialo desde NOTICE.",null,{},"/es/blog/ipaex-gothic-gpdf",{"title":5,"description":1412},"es/blog/009.ipaex-gothic-gpdf",[1443,1444,1445],"recipe","cjk","tutorial","2o0VfHMtJLyqqM8Q1W8f5Qjv28mZMpka_GyPxoqTHvs",1776529274205]