[{"data":1,"prerenderedAt":1906},["ShallowReactive",2],{"blog-pt-bold-italic-together":3},{"id":4,"title":5,"author":6,"body":10,"date":1875,"description":1876,"draft":1877,"extension":1878,"howTo":1879,"image":1897,"meta":1898,"navigation":146,"path":1899,"seo":1900,"stem":1901,"tags":1902,"updated":1897,"__hash__":1905},"blogPt/pt/blog/013.bold-italic-together.md","Como uso negrito e itálico juntos no gpdf?",{"name":7,"url":8,"avatar":9},"Taiki Noda","https://nadai.dev/en/about","https://nadai.dev/og-default.png",{"type":11,"value":12,"toc":1865},"minimark",[13,18,27,31,39,101,120,123,127,688,710,714,717,793,823,827,833,980,990,993,1601,1614,1618,1626,1738,1760,1786,1790,1823,1827,1830,1847,1861],[14,15,17],"h2",{"id":16},"a-pergunta-em-outras-palavras","A pergunta, em outras palavras",[19,20,21,22,26],"p",{},"Quero que uma palavra — ou uma linha inteira — apareça ao mesmo tempo ",[23,24,25],"strong",{},"em negrito e em itálico"," dentro do PDF. Como aplicar os dois estilos de uma vez, e por que às vezes o resultado não parece nem um nem outro?",[14,28,30],{"id":29},"a-resposta-curta","A resposta curta",[19,32,33,34,38],{},"Passe as duas opções na mesma chamada ",[35,36,37],"code",{},"c.Text",":",[40,41,46],"pre",{"className":42,"code":43,"language":44,"meta":45,"style":45},"language-go shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","c.Text(\"WARNING\", template.Bold(), template.Italic())\n","go","",[35,47,48],{"__ignoreMap":45},[49,50,53,57,61,65,68,71,75,77,80,83,85,88,91,93,95,98],"span",{"class":51,"line":52},"line",1,[49,54,56],{"class":55},"sTEyZ","c",[49,58,60],{"class":59},"sMK4o",".",[49,62,64],{"class":63},"s2Zo4","Text",[49,66,67],{"class":59},"(",[49,69,70],{"class":59},"\"",[49,72,74],{"class":73},"sfazB","WARNING",[49,76,70],{"class":59},[49,78,79],{"class":59},",",[49,81,82],{"class":55}," template",[49,84,60],{"class":59},[49,86,87],{"class":63},"Bold",[49,89,90],{"class":59},"(),",[49,92,82],{"class":55},[49,94,60],{"class":59},[49,96,97],{"class":63},"Italic",[49,99,100],{"class":59},"())\n",[19,102,103,104,107,108,111,112,115,116,119],{},"O gpdf monta o ID de variante ",[35,105,106],{},"Family-BoldItalic"," e procura isso nas fontes registradas. Para as famílias Adobe Standard 14 (Helvetica, Courier, Times) funciona direto — o gpdf aliaseia internamente ",[35,109,110],{},"-BoldItalic"," para o nome canônico ",[35,113,114],{},"-BoldOblique"," e usa as métricas AFM embutidas. Para uma fonte TrueType que você mesmo registra, ",[23,117,118],{},"é preciso registrar as quatro variantes",", senão a busca cai silenciosamente na família base.",[19,121,122],{},"É nesse segundo ponto que moram a maioria dos bugs.",[14,124,126],{"id":125},"código-funcional-helvetica-sem-registrar-fontes","Código funcional (Helvetica, sem registrar fontes)",[40,128,130],{"className":42,"code":129,"language":44,"meta":45,"style":45},"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    doc := gpdf.NewDocument(\n        gpdf.WithPageSize(gpdf.A4),\n        gpdf.WithMargins(document.UniformEdges(document.Mm(20))),\n    )\n\n    page := doc.AddPage()\n    page.AutoRow(func(r *template.RowBuilder) {\n        r.Col(12, func(c *template.ColBuilder) {\n            c.Text(\"Regular Helvetica.\")\n            c.Text(\"Bold only.\", template.Bold())\n            c.Text(\"Italic only.\", template.Italic())\n            c.Text(\"Bold and italic.\", template.Bold(), template.Italic())\n        })\n    })\n\n    data, err := doc.Generate()\n    if err != nil {\n        log.Fatal(err)\n    }\n    if err := os.WriteFile(\"emphasis.pdf\", data, 0o644); err != nil {\n        log.Fatal(err)\n    }\n}\n",[35,131,132,141,148,158,170,180,185,195,205,215,221,226,241,261,285,323,329,334,353,387,423,444,472,500,536,542,548,553,575,591,609,615,662,677,682],{"__ignoreMap":45},[49,133,134,137],{"class":51,"line":52},[49,135,136],{"class":59},"package",[49,138,140],{"class":139},"sBMFI"," main\n",[49,142,144],{"class":51,"line":143},2,[49,145,147],{"emptyLinePlaceholder":146},true,"\n",[49,149,151,155],{"class":51,"line":150},3,[49,152,154],{"class":153},"s7zQu","import",[49,156,157],{"class":59}," (\n",[49,159,161,164,167],{"class":51,"line":160},4,[49,162,163],{"class":59},"    \"",[49,165,166],{"class":139},"log",[49,168,169],{"class":59},"\"\n",[49,171,173,175,178],{"class":51,"line":172},5,[49,174,163],{"class":59},[49,176,177],{"class":139},"os",[49,179,169],{"class":59},[49,181,183],{"class":51,"line":182},6,[49,184,147],{"emptyLinePlaceholder":146},[49,186,188,190,193],{"class":51,"line":187},7,[49,189,163],{"class":59},[49,191,192],{"class":139},"github.com/gpdf-dev/gpdf",[49,194,169],{"class":59},[49,196,198,200,203],{"class":51,"line":197},8,[49,199,163],{"class":59},[49,201,202],{"class":139},"github.com/gpdf-dev/gpdf/document",[49,204,169],{"class":59},[49,206,208,210,213],{"class":51,"line":207},9,[49,209,163],{"class":59},[49,211,212],{"class":139},"github.com/gpdf-dev/gpdf/template",[49,214,169],{"class":59},[49,216,218],{"class":51,"line":217},10,[49,219,220],{"class":59},")\n",[49,222,224],{"class":51,"line":223},11,[49,225,147],{"emptyLinePlaceholder":146},[49,227,229,232,235,238],{"class":51,"line":228},12,[49,230,231],{"class":59},"func",[49,233,234],{"class":63}," main",[49,236,237],{"class":59},"()",[49,239,240],{"class":59}," {\n",[49,242,244,247,250,253,255,258],{"class":51,"line":243},13,[49,245,246],{"class":55},"    doc ",[49,248,249],{"class":59},":=",[49,251,252],{"class":55}," gpdf",[49,254,60],{"class":59},[49,256,257],{"class":63},"NewDocument",[49,259,260],{"class":59},"(\n",[49,262,264,267,269,272,274,277,279,282],{"class":51,"line":263},14,[49,265,266],{"class":55},"        gpdf",[49,268,60],{"class":59},[49,270,271],{"class":63},"WithPageSize",[49,273,67],{"class":59},[49,275,276],{"class":55},"gpdf",[49,278,60],{"class":59},[49,280,281],{"class":55},"A4",[49,283,284],{"class":59},"),\n",[49,286,288,290,292,295,297,300,302,305,307,309,311,314,316,320],{"class":51,"line":287},15,[49,289,266],{"class":55},[49,291,60],{"class":59},[49,293,294],{"class":63},"WithMargins",[49,296,67],{"class":59},[49,298,299],{"class":55},"document",[49,301,60],{"class":59},[49,303,304],{"class":63},"UniformEdges",[49,306,67],{"class":59},[49,308,299],{"class":55},[49,310,60],{"class":59},[49,312,313],{"class":63},"Mm",[49,315,67],{"class":59},[49,317,319],{"class":318},"sbssI","20",[49,321,322],{"class":59},"))),\n",[49,324,326],{"class":51,"line":325},16,[49,327,328],{"class":59},"    )\n",[49,330,332],{"class":51,"line":331},17,[49,333,147],{"emptyLinePlaceholder":146},[49,335,337,340,342,345,347,350],{"class":51,"line":336},18,[49,338,339],{"class":55},"    page ",[49,341,249],{"class":59},[49,343,344],{"class":55}," doc",[49,346,60],{"class":59},[49,348,349],{"class":63},"AddPage",[49,351,352],{"class":59},"()\n",[49,354,356,359,361,364,367,371,374,377,379,382,385],{"class":51,"line":355},19,[49,357,358],{"class":55},"    page",[49,360,60],{"class":59},[49,362,363],{"class":63},"AutoRow",[49,365,366],{"class":59},"(func(",[49,368,370],{"class":369},"sHdIc","r",[49,372,373],{"class":59}," *",[49,375,376],{"class":139},"template",[49,378,60],{"class":59},[49,380,381],{"class":139},"RowBuilder",[49,383,384],{"class":59},")",[49,386,240],{"class":59},[49,388,390,393,395,398,400,403,405,408,410,412,414,416,419,421],{"class":51,"line":389},20,[49,391,392],{"class":55},"        r",[49,394,60],{"class":59},[49,396,397],{"class":63},"Col",[49,399,67],{"class":59},[49,401,402],{"class":318},"12",[49,404,79],{"class":59},[49,406,407],{"class":59}," func(",[49,409,56],{"class":369},[49,411,373],{"class":59},[49,413,376],{"class":139},[49,415,60],{"class":59},[49,417,418],{"class":139},"ColBuilder",[49,420,384],{"class":59},[49,422,240],{"class":59},[49,424,426,429,431,433,435,437,440,442],{"class":51,"line":425},21,[49,427,428],{"class":55},"            c",[49,430,60],{"class":59},[49,432,64],{"class":63},[49,434,67],{"class":59},[49,436,70],{"class":59},[49,438,439],{"class":73},"Regular Helvetica.",[49,441,70],{"class":59},[49,443,220],{"class":59},[49,445,447,449,451,453,455,457,460,462,464,466,468,470],{"class":51,"line":446},22,[49,448,428],{"class":55},[49,450,60],{"class":59},[49,452,64],{"class":63},[49,454,67],{"class":59},[49,456,70],{"class":59},[49,458,459],{"class":73},"Bold only.",[49,461,70],{"class":59},[49,463,79],{"class":59},[49,465,82],{"class":55},[49,467,60],{"class":59},[49,469,87],{"class":63},[49,471,100],{"class":59},[49,473,475,477,479,481,483,485,488,490,492,494,496,498],{"class":51,"line":474},23,[49,476,428],{"class":55},[49,478,60],{"class":59},[49,480,64],{"class":63},[49,482,67],{"class":59},[49,484,70],{"class":59},[49,486,487],{"class":73},"Italic only.",[49,489,70],{"class":59},[49,491,79],{"class":59},[49,493,82],{"class":55},[49,495,60],{"class":59},[49,497,97],{"class":63},[49,499,100],{"class":59},[49,501,503,505,507,509,511,513,516,518,520,522,524,526,528,530,532,534],{"class":51,"line":502},24,[49,504,428],{"class":55},[49,506,60],{"class":59},[49,508,64],{"class":63},[49,510,67],{"class":59},[49,512,70],{"class":59},[49,514,515],{"class":73},"Bold and italic.",[49,517,70],{"class":59},[49,519,79],{"class":59},[49,521,82],{"class":55},[49,523,60],{"class":59},[49,525,87],{"class":63},[49,527,90],{"class":59},[49,529,82],{"class":55},[49,531,60],{"class":59},[49,533,97],{"class":63},[49,535,100],{"class":59},[49,537,539],{"class":51,"line":538},25,[49,540,541],{"class":59},"        })\n",[49,543,545],{"class":51,"line":544},26,[49,546,547],{"class":59},"    })\n",[49,549,551],{"class":51,"line":550},27,[49,552,147],{"emptyLinePlaceholder":146},[49,554,556,559,561,564,566,568,570,573],{"class":51,"line":555},28,[49,557,558],{"class":55},"    data",[49,560,79],{"class":59},[49,562,563],{"class":55}," err ",[49,565,249],{"class":59},[49,567,344],{"class":55},[49,569,60],{"class":59},[49,571,572],{"class":63},"Generate",[49,574,352],{"class":59},[49,576,578,581,583,586,589],{"class":51,"line":577},29,[49,579,580],{"class":153},"    if",[49,582,563],{"class":55},[49,584,585],{"class":59},"!=",[49,587,588],{"class":59}," nil",[49,590,240],{"class":59},[49,592,594,597,599,602,604,607],{"class":51,"line":593},30,[49,595,596],{"class":55},"        log",[49,598,60],{"class":59},[49,600,601],{"class":63},"Fatal",[49,603,67],{"class":59},[49,605,606],{"class":55},"err",[49,608,220],{"class":59},[49,610,612],{"class":51,"line":611},31,[49,613,614],{"class":59},"    }\n",[49,616,618,620,622,624,627,629,632,634,636,639,641,643,646,648,651,654,656,658,660],{"class":51,"line":617},32,[49,619,580],{"class":153},[49,621,563],{"class":55},[49,623,249],{"class":59},[49,625,626],{"class":55}," os",[49,628,60],{"class":59},[49,630,631],{"class":63},"WriteFile",[49,633,67],{"class":59},[49,635,70],{"class":59},[49,637,638],{"class":73},"emphasis.pdf",[49,640,70],{"class":59},[49,642,79],{"class":59},[49,644,645],{"class":55}," data",[49,647,79],{"class":59},[49,649,650],{"class":318}," 0o644",[49,652,653],{"class":59},");",[49,655,563],{"class":55},[49,657,585],{"class":59},[49,659,588],{"class":59},[49,661,240],{"class":59},[49,663,665,667,669,671,673,675],{"class":51,"line":664},33,[49,666,596],{"class":55},[49,668,60],{"class":59},[49,670,601],{"class":63},[49,672,67],{"class":59},[49,674,606],{"class":55},[49,676,220],{"class":59},[49,678,680],{"class":51,"line":679},34,[49,681,614],{"class":59},[49,683,685],{"class":51,"line":684},35,[49,686,687],{"class":59},"}\n",[19,689,690,691,694,695,698,699,698,702,705,706,709],{},"Quatro linhas, quatro estilos visíveis. Nenhuma chamada ",[35,692,693],{},"WithFont",". O PDF referencia ",[35,696,697],{},"Helvetica",", ",[35,700,701],{},"Helvetica-Bold",[35,703,704],{},"Helvetica-Oblique"," e ",[35,707,708],{},"Helvetica-BoldOblique"," como entradas Type 1 não-embutidas, que todo visualizador de PDF já tem.",[14,711,713],{"id":712},"o-que-o-gpdf-realmente-faz","O que o gpdf realmente faz",[19,715,716],{},"O resolver monta o ID de variante a partir das flags de estilo:",[718,719,720,740],"table",{},[721,722,723],"thead",{},[724,725,726,732,737],"tr",{},[727,728,729],"th",{},[35,730,731],{},"Bold()",[727,733,734],{},[35,735,736],{},"Italic()",[727,738,739],{},"ID de variante pesquisado",[741,742,743,755,766,780],"tbody",{},[724,744,745,749,751],{},[746,747,748],"td",{},"não",[746,750,748],{},[746,752,753],{},[35,754,697],{},[724,756,757,760,762],{},[746,758,759],{},"sim",[746,761,748],{},[746,763,764],{},[35,765,701],{},[724,767,768,770,772],{},[746,769,748],{},[746,771,759],{},[746,773,774,777,778],{},[35,775,776],{},"Helvetica-Italic"," → alias para ",[35,779,704],{},[724,781,782,784,786],{},[746,783,759],{},[746,785,759],{},[746,787,788,777,791],{},[35,789,790],{},"Helvetica-BoldItalic",[35,792,708],{},[19,794,795,796,799,800,803,804,806,807,809,810,705,812,809,814,816,817,803,820,60],{},"O passo de alias é a única coisa que torna Helvetica especial. ",[35,797,798],{},"buildFontVariantID"," sempre emite os sufixos genéricos ",[35,801,802],{},"-Italic"," / ",[35,805,110],{},", independentemente da família; depois o hook de init do Standard 14 aponta ",[35,808,776],{}," para ",[35,811,704],{},[35,813,790],{},[35,815,708],{},", fazendo com que as métricas batam com o que o visualizador desenha. Courier tem o mesmo tratamento. Times não precisa de alias porque o nome canônico já é ",[35,818,819],{},"Times-Italic",[35,821,822],{},"Times-BoldItalic",[14,824,826],{"id":825},"a-armadilha-fontes-truetype-exigem-quatro-registros","A armadilha: fontes TrueType exigem quatro registros",[19,828,829,830,832],{},"É aqui que documentos CJK quebram em silêncio. Se você registra o Noto Sans JP mas esquece uma variante, o slot faltante ",[23,831,748],{}," passa por Bold ou Italic como consolação — ele cai direto na família base.",[40,834,836],{"className":42,"code":835,"language":44,"meta":45,"style":45},"// Parece certo. Não está.\ndoc := gpdf.NewDocument(\n    gpdf.WithFont(\"NotoSansJP\", regular),\n    gpdf.WithFont(\"NotoSansJP-Bold\", bold),\n    gpdf.WithDefaultFont(\"NotoSansJP\", 12),\n)\n\n// Aqui renderiza em NotoSansJP normal — nem negrito, nem itálico.\nc.Text(\"強調したい\", template.Bold(), template.Italic())\n",[35,837,838,844,859,884,908,932,936,940,945],{"__ignoreMap":45},[49,839,840],{"class":51,"line":52},[49,841,843],{"class":842},"sHwdD","// Parece certo. Não está.\n",[49,845,846,849,851,853,855,857],{"class":51,"line":143},[49,847,848],{"class":55},"doc ",[49,850,249],{"class":59},[49,852,252],{"class":55},[49,854,60],{"class":59},[49,856,257],{"class":63},[49,858,260],{"class":59},[49,860,861,864,866,868,870,872,875,877,879,882],{"class":51,"line":150},[49,862,863],{"class":55},"    gpdf",[49,865,60],{"class":59},[49,867,693],{"class":63},[49,869,67],{"class":59},[49,871,70],{"class":59},[49,873,874],{"class":73},"NotoSansJP",[49,876,70],{"class":59},[49,878,79],{"class":59},[49,880,881],{"class":55}," regular",[49,883,284],{"class":59},[49,885,886,888,890,892,894,896,899,901,903,906],{"class":51,"line":160},[49,887,863],{"class":55},[49,889,60],{"class":59},[49,891,693],{"class":63},[49,893,67],{"class":59},[49,895,70],{"class":59},[49,897,898],{"class":73},"NotoSansJP-Bold",[49,900,70],{"class":59},[49,902,79],{"class":59},[49,904,905],{"class":55}," bold",[49,907,284],{"class":59},[49,909,910,912,914,917,919,921,923,925,927,930],{"class":51,"line":172},[49,911,863],{"class":55},[49,913,60],{"class":59},[49,915,916],{"class":63},"WithDefaultFont",[49,918,67],{"class":59},[49,920,70],{"class":59},[49,922,874],{"class":73},[49,924,70],{"class":59},[49,926,79],{"class":59},[49,928,929],{"class":318}," 12",[49,931,284],{"class":59},[49,933,934],{"class":51,"line":182},[49,935,220],{"class":59},[49,937,938],{"class":51,"line":187},[49,939,147],{"emptyLinePlaceholder":146},[49,941,942],{"class":51,"line":197},[49,943,944],{"class":842},"// Aqui renderiza em NotoSansJP normal — nem negrito, nem itálico.\n",[49,946,947,949,951,953,955,957,960,962,964,966,968,970,972,974,976,978],{"class":51,"line":207},[49,948,56],{"class":55},[49,950,60],{"class":59},[49,952,64],{"class":63},[49,954,67],{"class":59},[49,956,70],{"class":59},[49,958,959],{"class":73},"強調したい",[49,961,70],{"class":59},[49,963,79],{"class":59},[49,965,82],{"class":55},[49,967,60],{"class":59},[49,969,87],{"class":63},[49,971,90],{"class":59},[49,973,82],{"class":55},[49,975,60],{"class":59},[49,977,97],{"class":63},[49,979,100],{"class":59},[19,981,982,983,986,987,989],{},"A razão está na implementação do resolver. Primeiro busca ",[35,984,985],{},"NotoSansJP-BoldItalic",", não acha, e cai em exatamente uma coisa: a família base ",[35,988,874],{},". Não existe etapa intermediária que tente a versão em negrito como prêmio de consolação. Você pediu bold-italic, recebeu regular.",[19,991,992],{},"A correção é registrar cada variante que pretende usar:",[40,994,996],{"className":42,"code":995,"language":44,"meta":45,"style":45},"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    regular := mustRead(\"NotoSansJP-Regular.ttf\")\n    bold := mustRead(\"NotoSansJP-Bold.ttf\")\n    italic := mustRead(\"NotoSansJP-Italic.ttf\")\n    boldItalic := mustRead(\"NotoSansJP-BoldItalic.ttf\")\n\n    doc := gpdf.NewDocument(\n        gpdf.WithPageSize(gpdf.A4),\n        gpdf.WithFont(\"NotoSansJP\", regular),\n        gpdf.WithFont(\"NotoSansJP-Bold\", bold),\n        gpdf.WithFont(\"NotoSansJP-Italic\", italic),\n        gpdf.WithFont(\"NotoSansJP-BoldItalic\", boldItalic),\n        gpdf.WithDefaultFont(\"NotoSansJP\", 12),\n    )\n\n    page := doc.AddPage()\n    page.AutoRow(func(r *template.RowBuilder) {\n        r.Col(12, func(c *template.ColBuilder) {\n            c.Text(\"Texto normal\")\n            c.Text(\"ênfase\", template.Bold(), template.Italic())\n        })\n    })\n\n    data, _ := doc.Generate()\n    os.WriteFile(\"jp-emphasis.pdf\", data, 0o644)\n}\n\nfunc mustRead(path string) []byte {\n    b, err := os.ReadFile(path)\n    if err != nil { log.Fatal(err) }\n    return b\n}\n",[35,997,998,1004,1008,1014,1022,1030,1034,1042,1050,1058,1062,1066,1076,1097,1117,1137,1157,1161,1175,1193,1215,1237,1261,1284,1306,1310,1314,1328,1352,1382,1401,1436,1440,1444,1448,1467,1496,1501,1506,1532,1557,1587,1596],{"__ignoreMap":45},[49,999,1000,1002],{"class":51,"line":52},[49,1001,136],{"class":59},[49,1003,140],{"class":139},[49,1005,1006],{"class":51,"line":143},[49,1007,147],{"emptyLinePlaceholder":146},[49,1009,1010,1012],{"class":51,"line":150},[49,1011,154],{"class":153},[49,1013,157],{"class":59},[49,1015,1016,1018,1020],{"class":51,"line":160},[49,1017,163],{"class":59},[49,1019,166],{"class":139},[49,1021,169],{"class":59},[49,1023,1024,1026,1028],{"class":51,"line":172},[49,1025,163],{"class":59},[49,1027,177],{"class":139},[49,1029,169],{"class":59},[49,1031,1032],{"class":51,"line":182},[49,1033,147],{"emptyLinePlaceholder":146},[49,1035,1036,1038,1040],{"class":51,"line":187},[49,1037,163],{"class":59},[49,1039,192],{"class":139},[49,1041,169],{"class":59},[49,1043,1044,1046,1048],{"class":51,"line":197},[49,1045,163],{"class":59},[49,1047,202],{"class":139},[49,1049,169],{"class":59},[49,1051,1052,1054,1056],{"class":51,"line":207},[49,1053,163],{"class":59},[49,1055,212],{"class":139},[49,1057,169],{"class":59},[49,1059,1060],{"class":51,"line":217},[49,1061,220],{"class":59},[49,1063,1064],{"class":51,"line":223},[49,1065,147],{"emptyLinePlaceholder":146},[49,1067,1068,1070,1072,1074],{"class":51,"line":228},[49,1069,231],{"class":59},[49,1071,234],{"class":63},[49,1073,237],{"class":59},[49,1075,240],{"class":59},[49,1077,1078,1081,1083,1086,1088,1090,1093,1095],{"class":51,"line":243},[49,1079,1080],{"class":55},"    regular ",[49,1082,249],{"class":59},[49,1084,1085],{"class":63}," mustRead",[49,1087,67],{"class":59},[49,1089,70],{"class":59},[49,1091,1092],{"class":73},"NotoSansJP-Regular.ttf",[49,1094,70],{"class":59},[49,1096,220],{"class":59},[49,1098,1099,1102,1104,1106,1108,1110,1113,1115],{"class":51,"line":263},[49,1100,1101],{"class":55},"    bold ",[49,1103,249],{"class":59},[49,1105,1085],{"class":63},[49,1107,67],{"class":59},[49,1109,70],{"class":59},[49,1111,1112],{"class":73},"NotoSansJP-Bold.ttf",[49,1114,70],{"class":59},[49,1116,220],{"class":59},[49,1118,1119,1122,1124,1126,1128,1130,1133,1135],{"class":51,"line":287},[49,1120,1121],{"class":55},"    italic ",[49,1123,249],{"class":59},[49,1125,1085],{"class":63},[49,1127,67],{"class":59},[49,1129,70],{"class":59},[49,1131,1132],{"class":73},"NotoSansJP-Italic.ttf",[49,1134,70],{"class":59},[49,1136,220],{"class":59},[49,1138,1139,1142,1144,1146,1148,1150,1153,1155],{"class":51,"line":325},[49,1140,1141],{"class":55},"    boldItalic ",[49,1143,249],{"class":59},[49,1145,1085],{"class":63},[49,1147,67],{"class":59},[49,1149,70],{"class":59},[49,1151,1152],{"class":73},"NotoSansJP-BoldItalic.ttf",[49,1154,70],{"class":59},[49,1156,220],{"class":59},[49,1158,1159],{"class":51,"line":331},[49,1160,147],{"emptyLinePlaceholder":146},[49,1162,1163,1165,1167,1169,1171,1173],{"class":51,"line":336},[49,1164,246],{"class":55},[49,1166,249],{"class":59},[49,1168,252],{"class":55},[49,1170,60],{"class":59},[49,1172,257],{"class":63},[49,1174,260],{"class":59},[49,1176,1177,1179,1181,1183,1185,1187,1189,1191],{"class":51,"line":355},[49,1178,266],{"class":55},[49,1180,60],{"class":59},[49,1182,271],{"class":63},[49,1184,67],{"class":59},[49,1186,276],{"class":55},[49,1188,60],{"class":59},[49,1190,281],{"class":55},[49,1192,284],{"class":59},[49,1194,1195,1197,1199,1201,1203,1205,1207,1209,1211,1213],{"class":51,"line":389},[49,1196,266],{"class":55},[49,1198,60],{"class":59},[49,1200,693],{"class":63},[49,1202,67],{"class":59},[49,1204,70],{"class":59},[49,1206,874],{"class":73},[49,1208,70],{"class":59},[49,1210,79],{"class":59},[49,1212,881],{"class":55},[49,1214,284],{"class":59},[49,1216,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235],{"class":51,"line":425},[49,1218,266],{"class":55},[49,1220,60],{"class":59},[49,1222,693],{"class":63},[49,1224,67],{"class":59},[49,1226,70],{"class":59},[49,1228,898],{"class":73},[49,1230,70],{"class":59},[49,1232,79],{"class":59},[49,1234,905],{"class":55},[49,1236,284],{"class":59},[49,1238,1239,1241,1243,1245,1247,1249,1252,1254,1256,1259],{"class":51,"line":446},[49,1240,266],{"class":55},[49,1242,60],{"class":59},[49,1244,693],{"class":63},[49,1246,67],{"class":59},[49,1248,70],{"class":59},[49,1250,1251],{"class":73},"NotoSansJP-Italic",[49,1253,70],{"class":59},[49,1255,79],{"class":59},[49,1257,1258],{"class":55}," italic",[49,1260,284],{"class":59},[49,1262,1263,1265,1267,1269,1271,1273,1275,1277,1279,1282],{"class":51,"line":474},[49,1264,266],{"class":55},[49,1266,60],{"class":59},[49,1268,693],{"class":63},[49,1270,67],{"class":59},[49,1272,70],{"class":59},[49,1274,985],{"class":73},[49,1276,70],{"class":59},[49,1278,79],{"class":59},[49,1280,1281],{"class":55}," boldItalic",[49,1283,284],{"class":59},[49,1285,1286,1288,1290,1292,1294,1296,1298,1300,1302,1304],{"class":51,"line":502},[49,1287,266],{"class":55},[49,1289,60],{"class":59},[49,1291,916],{"class":63},[49,1293,67],{"class":59},[49,1295,70],{"class":59},[49,1297,874],{"class":73},[49,1299,70],{"class":59},[49,1301,79],{"class":59},[49,1303,929],{"class":318},[49,1305,284],{"class":59},[49,1307,1308],{"class":51,"line":538},[49,1309,328],{"class":59},[49,1311,1312],{"class":51,"line":544},[49,1313,147],{"emptyLinePlaceholder":146},[49,1315,1316,1318,1320,1322,1324,1326],{"class":51,"line":550},[49,1317,339],{"class":55},[49,1319,249],{"class":59},[49,1321,344],{"class":55},[49,1323,60],{"class":59},[49,1325,349],{"class":63},[49,1327,352],{"class":59},[49,1329,1330,1332,1334,1336,1338,1340,1342,1344,1346,1348,1350],{"class":51,"line":555},[49,1331,358],{"class":55},[49,1333,60],{"class":59},[49,1335,363],{"class":63},[49,1337,366],{"class":59},[49,1339,370],{"class":369},[49,1341,373],{"class":59},[49,1343,376],{"class":139},[49,1345,60],{"class":59},[49,1347,381],{"class":139},[49,1349,384],{"class":59},[49,1351,240],{"class":59},[49,1353,1354,1356,1358,1360,1362,1364,1366,1368,1370,1372,1374,1376,1378,1380],{"class":51,"line":577},[49,1355,392],{"class":55},[49,1357,60],{"class":59},[49,1359,397],{"class":63},[49,1361,67],{"class":59},[49,1363,402],{"class":318},[49,1365,79],{"class":59},[49,1367,407],{"class":59},[49,1369,56],{"class":369},[49,1371,373],{"class":59},[49,1373,376],{"class":139},[49,1375,60],{"class":59},[49,1377,418],{"class":139},[49,1379,384],{"class":59},[49,1381,240],{"class":59},[49,1383,1384,1386,1388,1390,1392,1394,1397,1399],{"class":51,"line":593},[49,1385,428],{"class":55},[49,1387,60],{"class":59},[49,1389,64],{"class":63},[49,1391,67],{"class":59},[49,1393,70],{"class":59},[49,1395,1396],{"class":73},"Texto normal",[49,1398,70],{"class":59},[49,1400,220],{"class":59},[49,1402,1403,1405,1407,1409,1411,1413,1416,1418,1420,1422,1424,1426,1428,1430,1432,1434],{"class":51,"line":611},[49,1404,428],{"class":55},[49,1406,60],{"class":59},[49,1408,64],{"class":63},[49,1410,67],{"class":59},[49,1412,70],{"class":59},[49,1414,1415],{"class":73},"ênfase",[49,1417,70],{"class":59},[49,1419,79],{"class":59},[49,1421,82],{"class":55},[49,1423,60],{"class":59},[49,1425,87],{"class":63},[49,1427,90],{"class":59},[49,1429,82],{"class":55},[49,1431,60],{"class":59},[49,1433,97],{"class":63},[49,1435,100],{"class":59},[49,1437,1438],{"class":51,"line":617},[49,1439,541],{"class":59},[49,1441,1442],{"class":51,"line":664},[49,1443,547],{"class":59},[49,1445,1446],{"class":51,"line":679},[49,1447,147],{"emptyLinePlaceholder":146},[49,1449,1450,1452,1454,1457,1459,1461,1463,1465],{"class":51,"line":684},[49,1451,558],{"class":55},[49,1453,79],{"class":59},[49,1455,1456],{"class":55}," _ ",[49,1458,249],{"class":59},[49,1460,344],{"class":55},[49,1462,60],{"class":59},[49,1464,572],{"class":63},[49,1466,352],{"class":59},[49,1468,1470,1473,1475,1477,1479,1481,1484,1486,1488,1490,1492,1494],{"class":51,"line":1469},36,[49,1471,1472],{"class":55},"    os",[49,1474,60],{"class":59},[49,1476,631],{"class":63},[49,1478,67],{"class":59},[49,1480,70],{"class":59},[49,1482,1483],{"class":73},"jp-emphasis.pdf",[49,1485,70],{"class":59},[49,1487,79],{"class":59},[49,1489,645],{"class":55},[49,1491,79],{"class":59},[49,1493,650],{"class":318},[49,1495,220],{"class":59},[49,1497,1499],{"class":51,"line":1498},37,[49,1500,687],{"class":59},[49,1502,1504],{"class":51,"line":1503},38,[49,1505,147],{"emptyLinePlaceholder":146},[49,1507,1509,1511,1513,1515,1518,1522,1524,1527,1530],{"class":51,"line":1508},39,[49,1510,231],{"class":59},[49,1512,1085],{"class":63},[49,1514,67],{"class":59},[49,1516,1517],{"class":369},"path",[49,1519,1521],{"class":1520},"spNyl"," string",[49,1523,384],{"class":59},[49,1525,1526],{"class":59}," []",[49,1528,1529],{"class":1520},"byte",[49,1531,240],{"class":59},[49,1533,1535,1538,1540,1542,1544,1546,1548,1551,1553,1555],{"class":51,"line":1534},40,[49,1536,1537],{"class":55},"    b",[49,1539,79],{"class":59},[49,1541,563],{"class":55},[49,1543,249],{"class":59},[49,1545,626],{"class":55},[49,1547,60],{"class":59},[49,1549,1550],{"class":63},"ReadFile",[49,1552,67],{"class":59},[49,1554,1517],{"class":55},[49,1556,220],{"class":59},[49,1558,1560,1562,1564,1566,1568,1571,1574,1576,1578,1580,1582,1584],{"class":51,"line":1559},41,[49,1561,580],{"class":153},[49,1563,563],{"class":55},[49,1565,585],{"class":59},[49,1567,588],{"class":59},[49,1569,1570],{"class":59}," {",[49,1572,1573],{"class":55}," log",[49,1575,60],{"class":59},[49,1577,601],{"class":63},[49,1579,67],{"class":59},[49,1581,606],{"class":55},[49,1583,384],{"class":59},[49,1585,1586],{"class":59}," }\n",[49,1588,1590,1593],{"class":51,"line":1589},42,[49,1591,1592],{"class":153},"    return",[49,1594,1595],{"class":55}," b\n",[49,1597,1599],{"class":51,"line":1598},43,[49,1600,687],{"class":59},[19,1602,1603,1604,1607,1608,1610,1611,1613],{},"A propósito: a distribuição oficial do Noto Sans JP na prática não traz um corte itálico (slanted) — tipografia japonesa raramente usa itálico — então a maioria dos documentos em japonês registra só regular e bold e simplesmente não chama ",[35,1605,1606],{},"template.Italic()"," em spans japoneses. Tudo bem assim. A regra é: se você nunca chama ",[35,1609,736],{}," em uma família, não precisa da variante itálica dela. A armadilha só surge quando você chama ",[35,1612,736],{}," sem ter registrado o arquivo.",[14,1615,1617],{"id":1616},"misturar-negrito-e-itálico-no-mesmo-parágrafo","Misturar negrito e itálico no mesmo parágrafo",[19,1619,1620,1622,1623,38],{},[35,1621,37],{}," aplica um único estilo a toda a string. Para ênfase no meio da frase use ",[35,1624,1625],{},"c.RichText",[40,1627,1629],{"className":42,"code":1628,"language":44,"meta":45,"style":45},"c.RichText(func(rt *template.RichTextBuilder) {\n    rt.Span(\"The \")\n    rt.Span(\"quick brown fox\", template.Bold(), template.Italic())\n    rt.Span(\" jumps over the lazy dog.\")\n})\n",[35,1630,1631,1658,1679,1714,1733],{"__ignoreMap":45},[49,1632,1633,1635,1637,1640,1642,1645,1647,1649,1651,1654,1656],{"class":51,"line":52},[49,1634,56],{"class":55},[49,1636,60],{"class":59},[49,1638,1639],{"class":63},"RichText",[49,1641,366],{"class":59},[49,1643,1644],{"class":369},"rt",[49,1646,373],{"class":59},[49,1648,376],{"class":139},[49,1650,60],{"class":59},[49,1652,1653],{"class":139},"RichTextBuilder",[49,1655,384],{"class":59},[49,1657,240],{"class":59},[49,1659,1660,1663,1665,1668,1670,1672,1675,1677],{"class":51,"line":143},[49,1661,1662],{"class":55},"    rt",[49,1664,60],{"class":59},[49,1666,1667],{"class":63},"Span",[49,1669,67],{"class":59},[49,1671,70],{"class":59},[49,1673,1674],{"class":73},"The ",[49,1676,70],{"class":59},[49,1678,220],{"class":59},[49,1680,1681,1683,1685,1687,1689,1691,1694,1696,1698,1700,1702,1704,1706,1708,1710,1712],{"class":51,"line":150},[49,1682,1662],{"class":55},[49,1684,60],{"class":59},[49,1686,1667],{"class":63},[49,1688,67],{"class":59},[49,1690,70],{"class":59},[49,1692,1693],{"class":73},"quick brown fox",[49,1695,70],{"class":59},[49,1697,79],{"class":59},[49,1699,82],{"class":55},[49,1701,60],{"class":59},[49,1703,87],{"class":63},[49,1705,90],{"class":59},[49,1707,82],{"class":55},[49,1709,60],{"class":59},[49,1711,97],{"class":63},[49,1713,100],{"class":59},[49,1715,1716,1718,1720,1722,1724,1726,1729,1731],{"class":51,"line":160},[49,1717,1662],{"class":55},[49,1719,60],{"class":59},[49,1721,1667],{"class":63},[49,1723,67],{"class":59},[49,1725,70],{"class":59},[49,1727,1728],{"class":73}," jumps over the lazy dog.",[49,1730,70],{"class":59},[49,1732,220],{"class":59},[49,1734,1735],{"class":51,"line":172},[49,1736,1737],{"class":59},"})\n",[19,1739,1740,1741,1744,1745,1747,1748,1750,1751,1753,1754,1756,1757,1759],{},"Cada ",[35,1742,1743],{},"rt.Span"," tem suas próprias flags de estilo, e o motor de layout faz as quebras de linha entre spans como um processador de texto faria. Usar ",[35,1746,731],{}," + ",[35,1749,736],{}," em um único ",[35,1752,1667],{}," cai no mesmo lookup da variante ",[35,1755,110],{}," que o ",[35,1758,37],{}," — é o mesmo caminho de código.",[19,1761,1762,1763,705,1765,1767,1768,705,1771,1774,1775,705,1778,1781,1782,1785],{},"Um detalhe que vale nomear: ",[35,1764,731],{},[35,1766,736],{}," são comutativos. ",[35,1769,1770],{},"template.Italic(), template.Bold()",[35,1772,1773],{},"template.Bold(), template.Italic()"," produzem saídas idênticas. Elas setam dois campos diferentes (",[35,1776,1777],{},"FontWeight",[35,1779,1780],{},"FontStyle",") no mesmo ",[35,1783,1784],{},"document.Style",", então a ordem não importa.",[14,1787,1789],{"id":1788},"receitas-relacionadas","Receitas relacionadas",[1791,1792,1793,1805,1812],"ul",{},[1794,1795,1796,1801,1802,1804],"li",{},[1797,1798,1800],"a",{"href":1799},"/pt/blog/embed-japanese-font","Como embutir uma fonte japonesa no gpdf"," — passo-a-passo completo de ",[35,1803,693],{}," com o padrão de quatro variantes",[1794,1806,1807,1811],{},[1797,1808,1810],{"href":1809},"/pt/blog/tofu-boxes-japanese","Por que meu PDF mostra quadrados vazios (tofu) em japonês?"," — como o \"fallback silencioso\" aparece quando nem a família base está registrada",[1794,1813,1814,1818,1819,1822],{},[1797,1815,1817],{"href":1816},"/pt/blog/noto-sans-jp-with-gpdf","Como usar Noto Sans JP com gpdf"," — qual arquivo Noto escolher e como ",[35,1820,1821],{},"go:embed"," simplifica a distribuição",[14,1824,1826],{"id":1825},"experimente-o-gpdf","Experimente o gpdf",[19,1828,1829],{},"O gpdf é uma biblioteca Go para gerar PDFs. Licença MIT, zero dependências externas, suporte CJK nativo.",[40,1831,1835],{"className":1832,"code":1833,"language":1834,"meta":45,"style":45},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","go get github.com/gpdf-dev/gpdf\n","bash",[35,1836,1837],{"__ignoreMap":45},[49,1838,1839,1841,1844],{"class":51,"line":52},[49,1840,44],{"class":139},[49,1842,1843],{"class":73}," get",[49,1845,1846],{"class":73}," github.com/gpdf-dev/gpdf\n",[19,1848,1849,1855,1856],{},[1797,1850,1854],{"href":1851,"rel":1852},"https://github.com/gpdf-dev/gpdf",[1853],"nofollow","⭐ Star on GitHub"," · ",[1797,1857,1860],{"href":1858,"rel":1859},"https://gpdf.dev/pt/docs/quickstart",[1853],"Leia a documentação",[1862,1863,1864],"style",{},"html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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);}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 .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 pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}",{"title":45,"searchDepth":143,"depth":143,"links":1866},[1867,1868,1869,1870,1871,1872,1873,1874],{"id":16,"depth":143,"text":17},{"id":29,"depth":143,"text":30},{"id":125,"depth":143,"text":126},{"id":712,"depth":143,"text":713},{"id":825,"depth":143,"text":826},{"id":1616,"depth":143,"text":1617},{"id":1788,"depth":143,"text":1789},{"id":1825,"depth":143,"text":1826},"2026-04-23","Basta passar template.Bold() e template.Italic() no mesmo span. Mas fontes TrueType exigem as quatro variantes registradas, senão a busca por BoldItalic cai silenciosamente para a família base.",false,"md",{"name":1880,"totalTime":1881,"tools":1882,"steps":1884},"Aplicar negrito e itálico combinados no gpdf","PT10M",[1883],"Go 1.22+",[1885,1888,1891,1894],{"name":1886,"text":1887},"Passe Bold() e Italic() na mesma chamada c.Text","Escreva c.Text(\"aviso\", template.Bold(), template.Italic()). O gpdf monta o ID de variante Family-BoldItalic e procura isso nas fontes registradas.",{"name":1889,"text":1890},"Deixe o alias embutido cuidar de Helvetica e Courier","Helvetica-BoldItalic e Courier-BoldItalic são automaticamente aliasedas para as métricas -BoldOblique da Adobe. Para as famílias Standard 14 não é preciso WithFont.",{"name":1892,"text":1893},"Registre as quatro variantes de uma família TrueType","Com NotoSansJP ou outro TTF, chame WithFont quatro vezes: NotoSansJP, NotoSansJP-Bold, NotoSansJP-Italic e NotoSansJP-BoldItalic. Variantes que faltam caem na família base, não na negrita.",{"name":1895,"text":1896},"Misture negrito e itálico dentro de um parágrafo com RichText","Para ênfase no meio da frase use c.RichText(func(rt) { rt.Span(\"normal\") ; rt.Span(\"negrito-itálico\", template.Bold(), template.Italic()) }).",null,{},"/pt/blog/bold-italic-together",{"title":5,"description":1876},"pt/blog/013.bold-italic-together",[1903,1904],"recipe","tutorial","ka4rwTxT4eT3f5aG_cMtBnNJQHaP-DewdmYQjLrVsL0",1779199037389]