The Master Guide / 14 Finishing and delivery · Graphics, captions, versions and delivery
Arabic typesetting and render checks
Arabic type is set by hand and checked letter by letter. Every render is checked for format, fonts, text and timing before anyone sees it.
Arabic type is set by hand and checked letter by letter. Every render is checked for format, fonts, text and timing before anyone sees it.
Setting Arabic
Direction: the page is marked as Arabic and right to left, with text aligned to the right. A Latin brand name inside an Arabic line is isolated so the word order holds (steps below). Never paste hidden direction marks from the copy list.
A real Arabic font, the brand's, as a local file. Letters then join and run right to left correctly.
A missing font is silent: the page falls back to a system font with no error. Before every render, confirm every face loaded (steps below), then compare the letters with a specimen of the brand font at full size.
Never track Arabic, and never stretch lines with kashida or justification. Line height 1.3–1.5, so dots and marks clear the next line.
Digits and signs exactly as approved: Arabic-Indic or Western, as the copy list writes them, never converted. The Arabic comma and question mark where the copy has them. If the copy carries vowel marks, check the font draws every mark at full size.
Line breaks set by hand from the copy list, with no hyphenation.
Entrances start from the reading side [best available, not yet validated]: Arabic slides in from the right, and wipes grow right to left. The brand book overrides.
Bilingual frames: Arabic and English never share one line. Each block keeps its own alignment, or both are centred, as the brand book says.
Letter for letter: write out every Arabic word from the rendered frame without looking at the copy, enlarging small text four times first. Compare it with the approved spelling in any text-comparison tool (see The quality bar → The hard stops, Do it yourself). Then check the key lines at full size yourself.
Checks after every render
Check | How | Pass |
Format | Read the codec, profile, pixel format, size, frame rate, colour space and frame count (steps below) | ProRes 4444 (overlay) or ProRes 422 HQ (opaque), the version's size, the sequence rate, BT.709, frames = duration × rate |
Alpha (overlays) | Export one empty and one full frame's alpha channel, then read its values (steps below) | 0 in empty areas, 255 on solid graphics, in between only on edges and fades |
Key frames | Composite each key frame over the real shot, and over mid-grey at the version's own size (steps below) | Nothing clipped; inside safe areas; readable over the picture |
Text and logo | Letter for letter against the copy list; the logo file against the client's file | Zero differences; the same file |
Positions and timing | Each element against the grid; entrances, holds and beats against the cut | One position per type; holds at least the reading time |
The whole piece [official guidance] | Contact sheets of every 12th frame, four across, composited over the real shot, covering the whole piece (steps below). Add the first frame, the last frame and every layout change at full size | Nothing clipped, crowded or touching; every layout change intended |
Scans [official guidance] | Step frame by frame through each element's start and end | No black or empty frame, no element that pops in or out in one frame, no one-frame flash, nothing touching the frame edge |
Key: BT.709 is the colour standard of HD video (the same as Rec.709). Alpha is the transparency channel: 0 is fully clear and 255 fully solid.
Do it yourself
Mark the page Arabic (HTML)
Mark the page as Arabic and right to left: lang="ar" dir="rtl".
Wrap a Latin brand name inside an Arabic line in <bdi>.
Check that every font loaded (Chrome)
In Chrome's developer tools, the Computed tab lists the Rendered Fonts.
Read the format (ffprobe)
ffprobe -v error -count_frames -select_streams v:0 -show_entries stream=codec_name,profile,pix_fmt,width,height,r_frame_rate,color_space,nb_read_frames -of compact GFX_claim.mov
Read the alpha (ffmpeg, Photoshop)
Export one empty and one full frame's alpha channel:
ffmpeg -ss 1.0 -i GFX_claim.mov -frames:v 1 -vf alphaextract -pix_fmt gray alpha.png
Read the values in Photoshop's Info panel.
Composite key frames over the shot and over grey (ffmpeg)
Composite over the real shot:
ffmpeg -i shot.mov -i GFX_claim.mov -filter_complex "[0:v][1:v]overlay=format=auto" -ss 2 -frames:v 1 view.png
Over mid-grey (the version's own size):
ffmpeg -f lavfi -i color=c=0x404040:s=1920x1080 -ss 2 -i GFX_claim.mov -filter_complex "[0][1]overlay=format=auto" -frames:v 1 grey.png
Make contact sheets of the whole piece (ffmpeg)
Composite every 12th frame over the real shot, four across:
ffmpeg -i shot.mov -i GFX_claim.mov -filter_complex "[0:v][1:v]overlay=format=auto:shortest=1,select='not(mod(n\,12))',scale=480:-2,tile=4x6" -fps_mode vfr sheet_%02d.png
It writes one sheet per 12 s at 24 fps, so a 30 s piece gives three (on ffmpeg older than 5.1, write -vsync vfr).
Sources
This Guide's own checks.
Chromium's Arabic shaping (HarfBuzz).
