Copy link to clipboard
Copied
Project that had no issue and is reopened a week later shows font as missing (name in square brackets).
It requires manually changing the font to the right one.
There is only one font of that name installed in Windows / Font folder but After Effects shows it duplicated in Character panel. One working one in square brackets. The problem is AE switched from working one to the one in brackets.
It happened before with few other fonts too.
This is a serious issue because you can easily render out animation assuming everything is correct because it was checked and saved before, meanwhile the fonts are messed up.
Copy link to clipboard
Copied
What version of AE are you using?
There has been a lot of font work since mid-last year and although I do know of some outstanding issues, what you've described is not necessarily an error in the code - but I lack complete information about your font environment to know.
My first assumption in these cases is that there is a perfectly plausible explanation for this - or could be - rather than just assume that something is broken.
* Is this missing font from Adobe Fonts?
* Is this missing font a Variable font?
* Is this missing font a Static version of a previous Variable font?
* Has the font environment on your system been changed since this document was last opened?
Here is a very plausible way this can appear to fail, but for valid reasons.
After Effects remembers a number of properties of a font reference, in addition to the PostScript name, and on open when it evaluates a font reference read from disk it first wants to find an exact match for all those properties to a font which is installed.
If it is unable to find a font that matches, it then looks to see if an installed font has the same PostScript name. If it does, then it will substitute the installed font for the missing one and you will not necessarily notice it. Note that from After Effect's perspective this is NOT the same font at all, but for historical reasons we assume customers accept this (and want it) even thought it might cause reflow because the font has different metrics.
However, if it is unable to find a candidate installed font it just leaves the font as missing and you see that with brackets.
Now, what the font tells us for the Family Name and the Style Name (which is what you see in the UI) is not what we use for matching. So two fonts could have the same Family/Style Name but a different PostScript name and we would not automatically accept it as a replacement.
I wonder if perhaps in your case this might explain your behavior - thus my questions about whether your font environment has changed, and in particular between Variable/Static versions of "the same" font.
There are scripts you could run which would show what font After Effects is looking for with the missing font vs what installed fonts exist.
Douglas Waterfall
After Effects Engineering
Copy link to clipboard
Copied
@Douglas_WaterfallThank you for sheding light on this issue. When I'll have a moment I will double check my fonts in regards to your questions. To answer the fist one: I always use the latest beta version.
Copy link to clipboard
Copied
As I'm trying to solve this issue I'm wondering how do you find missing fonts in After Effects?
Copy link to clipboard
Copied
I assume you mean where in the project where it is used?
You can do this via scripting, here is a little scratch script which dump all the usedFonts and the text of the layer where they were found. Save it as a ".jsx" file and run it just after you open your project from the File/Scripts menu.
// dump out used fonts.
(function() {
try {
var ufV = app.project.usedFonts;
if (ufV.length == 0) {
alert("No used fonts found.");
return true;
}
var msg = "";
for (var u = 0; u < ufV.length; u++) {
var font = ufV[u].font;
var layerIDs = ufV[u].layerIDs;
msg += "[" + font.postScriptName + "]:";
for (var l = 0; l < layerIDs.length; l++) {
var layerID = layerIDs[l];
if (l != 0) {
msg += ",";
}
var layer = app.project.layerByID(layerID);
var text = String(layer.property("Source Text").value);
msg += "\"" + text + "\"";
}
msg += "\n";
}
alert(msg);
return true;
}
catch(e) {
alert("Developer Error: " + e.toString() + " line:" + e.line);
return false;
}
})();
Douglas Waterfall
After Effects Engineering
Copy link to clipboard
Copied
Thank you.
Copy link to clipboard
Copied
Hope that helped.
Feel free to reach out. Moving this thread from Bugs to Discussions for now.
Thanks,
Nishu