[{"data":1,"prerenderedAt":199},["ShallowReactive",2],{"\u002Fdocs\u002Ftext-frames-and-best-practices":3},{"id":4,"title":5,"body":6,"category":186,"date":187,"description":188,"extension":189,"heroImage":190,"meta":191,"navigation":192,"path":193,"readingMinutes":194,"seo":195,"stem":196,"tool":197,"__hash__":198},"docs\u002Fdocs\u002Ftext-frames-and-best-practices.md","Text frames, bounds & best practices",{"type":7,"value":8,"toc":178},"minimark",[9,13,18,39,42,53,57,67,70,88,95,100,126,140,144,152,156],[10,11,12],"p",{},"Overriding text (a translation, a name, a price) looks simple from the API side — you send a string, you get pixels back. Two things the engine does under the hood decide whether that string actually lands the way you expect: how big the text is allowed to get, and how many pieces your InDesign text frame turned into. Both are worth understanding before you build automation around a document.",[14,15,17],"h2",{"id":16},"a-frames-size-is-the-maximum-bound-not-a-suggestion","A frame's size is the maximum bound, not a suggestion",[10,19,20,21,25,26,29,30,33,34,38],{},"When an InDesign text frame is converted, it becomes a serial text element with a fixed ",[22,23,24],"code",{},"width"," and ",[22,27,28],{},"height"," — captured once, at conversion time, from the original frame. Every render after that — including every ",[22,31,32],{},"textOverrides"," value you ever send — works ",[35,36,37],"strong",{},"inside that same box",". The engine has exactly two levers to make text fit: shrink the font size, and wrap into more lines. It never grows the box itself, no matter how long the replacement text is.",[10,40,41],{},"That means: if your English placeholder fits snugly and the German translation runs 30% longer, the frame doesn't expand to make room — the text shrinks (or wraps further) to stay inside the space you gave it in InDesign. This is precisely what makes the auto-fit engine useful (no manual resizing per language), but it also means the frame you draw is a real ceiling, not a hint.",[10,43,44,47,48,52],{},[35,45,46],{},"Best practice:"," size your text frames with headroom for the ",[49,50,51],"em",{},"longest"," value you'll ever send through them — the longest language, the longest name, the longest price string — not just the sample text you happened to design with. Auto-fit will shrink shorter values back down automatically; it can't invent space that was never there.",[14,54,56],{"id":55},"one-text-frame-doesnt-always-mean-one-override-key","One text frame doesn't always mean one override key",[10,58,59,60,63,64,66],{},"The converter doesn't always turn one InDesign text frame into one serial element. Depending on what's inside it, a single frame can become ",[35,61,62],{},"several"," elements — and each one gets its own key in ",[22,65,32],{},". This catches people off guard more than the bounds issue above, because it's invisible until you actually look at the converted result.",[10,68,69],{},"By default, a frame's content only splits into a new element at an existing paragraph break or forced line break, and only when:",[71,72,73,80,85],"ul",{},[74,75,76,77],"li",{},"the character formatting (font, size, weight, style, color, letter-spacing) or line spacing differs across that break, ",[35,78,79],{},"or",[74,81,82,83],{},"it's a blank line, ",[35,84,79],{},[74,86,87],{},"InDesign paragraph spacing (space-before\u002Fspace-after) is set on either paragraph.",[10,89,90,91,94],{},"Consistently-formatted paragraphs with no blank line and no paragraph spacing between them are actually ",[35,92,93],{},"merged"," into one multi-line element — a subtlety worth knowing, since it means simply pressing Enter between two lines doesn't automatically split them.",[10,96,97],{},[35,98,99],{},"What this means in practice:",[71,101,102,112,119],{},[74,103,104,105,107,108,111],{},"If you want a single ",[22,106,32],{}," key to control a whole heading or paragraph, keep its formatting uniform end to end and avoid paragraph spacing or blank lines inside it. A stray bold word or a different-colored phrase is fine to ",[49,109,110],{},"want",", but if it sits at a line break, it becomes a split point — what you meant as \"one sentence\" quietly becomes two override keys.",[74,113,114,115,118],{},"If two parts of what looks like one frame are conceptually different content — a headline and a caption, say — make them ",[35,116,117],{},"separate InDesign text frames"," from the start. It's cleaner to design that intent explicitly than to have the converter split a single frame for you and have to discover the extra key afterwards.",[74,120,121,122,125],{},"In short: ",[35,123,124],{},"one text frame per what is, in fact, one piece of text."," If it reads as one idea, keep it one frame with uniform formatting; if it's really two ideas, give it two frames.",[10,127,128,129,134,135,139],{},"You don't have to guess at any of this — load your file into the ",[130,131,133],"a",{"href":132},"\u002Fidml","Convert tool"," or the ",[130,136,138],{"href":137},"\u002Fidml\u002Fapi","API playground"," and open the text-overrides table. It shows exactly one row per element the conversion actually produced, with the key each one will use — check it before you wire up automation, not after.",[14,141,143],{"id":142},"mixed-formatting-needs-a-different-override-shape","Mixed formatting needs a different override shape",[10,145,146,147,151],{},"If a text element does end up with mixed formatting inside it (a bold word, a linked phrase), it's in \"rich text\" mode, and overriding it takes a small structured array instead of a plain string — see ",[130,148,150],{"href":149},"\u002Fdocs\u002Frichtext-override-format","Rich text format for overrides"," for the exact shape.",[14,153,155],{"id":154},"next-steps","Next steps",[71,157,158,169],{},[74,159,160,25,164,168],{},[130,161,163],{"href":162},"\u002Fdocs\u002Ftranslate-indesign-automatically","Translate InDesign projects automatically",[130,165,167],{"href":166},"\u002Fdocs\u002Fautomate-indesign-projects","Automate InDesign projects"," — put this into practice.",[74,170,171,174,175,177],{},[130,172,173],{"href":137},"Full API reference"," for ",[22,176,32],{}," and every other render option.",{"title":179,"searchDepth":180,"depth":180,"links":181},"",2,[182,183,184,185],{"id":16,"depth":180,"text":17},{"id":55,"depth":180,"text":56},{"id":142,"depth":180,"text":143},{"id":154,"depth":180,"text":155},"reference","2026-07-16","How the rendering engine and the InDesign→serial conversion actually interact — why a text frame's size is the hard ceiling for any override, and how to structure InDesign text so overrides stay clean and predictable.","md","\u002Fdocs-images\u002Ftext-frames-and-best-practices.svg",{},true,"\u002Fdocs\u002Ftext-frames-and-best-practices",6,{"title":5,"description":188},"docs\u002Ftext-frames-and-best-practices","indesign","O_XOgD3GrmxSTOOGGE0TGDM5APg6oZbmytFCAWmu8-U",1784233655741]