Как я могу программно установить шрифт на платформе Mac (Snow Leopard)? Какие шаги мне нужно будет выполнить? Я хотел бы, чтобы пользователь вводил файл шрифта, тогда мое программное обеспечение устанавливает его.Программная установка шрифтов
1
A
ответ
3
Шрифты принадлежат ~ пользователю/Библиотеке/Шрифтам/для одного пользователя или/Library/Fonts/должны быть доступны для всех пользователей. Вам нужно получить разрешение на запись в/Library/Fonts /, хотя для этого есть API, что делает его относительно простым. (. У меня есть код, где-то и можете посмотреть его, если никто не знает, экспромтом)
В соответствии с просьбой, вот некоторые API Docs:
Это старый код у меня есть который сделал обновление под Carbon (следовательно, строки pascal). Он был основан на примере кода, который, вероятно, находится где-то в указанном выше URL-адресе. Я не рассматривал это под какао, и это отредактированная версия кода (все еще немного грязная), поэтому YMMV.
int main()
{
OSStatus myStatus = -1;
char path[1024];
char myToolPath[2048];
getUpdateAppPath(myToolPath);
getFilePath(path);
if (path[0] != 0)
{
char temp[2048];
FILE *f;
printf("Attempting to open \'%s\'\n", path);
f = fopen(path, "w+");
if (f != 0) // we seem to have write permission
{
fclose(f);
SInt16 res;
sprintf(temp, "\'%s\' \'%s\'", myToolPath, path);
system(temp);
StandardAlert(kAlertNoteAlert, "\pUpdate Complete", "\pSuccessfully updated.", 0, &res);
return 0;
}
AuthorizationFlags myFlags = kAuthorizationFlagDefaults;
AuthorizationRef myAuthorizationRef;
myStatus = AuthorizationCreate(NULL, kAuthorizationEmptyEnvironment,
myFlags, &myAuthorizationRef);
if (myStatus != errAuthorizationSuccess)
{
SInt16 res;
StandardAlert(kAlertNoteAlert, "\pAuthorization Error", "\pCould not authorize application to update.", 0, &res);
return myStatus;
}
AuthorizationItem myItems = {kAuthorizationRightExecute, 0, NULL, 0};
AuthorizationRights myRights = {1, &myItems};
myFlags = kAuthorizationFlagDefaults |
kAuthorizationFlagInteractionAllowed |
kAuthorizationFlagPreAuthorize |
kAuthorizationFlagExtendRights;
myStatus = AuthorizationCopyRights (myAuthorizationRef, &myRights, NULL, myFlags, NULL);
if (myStatus != errAuthorizationSuccess)
break;
char *myArguments[] = { path, NULL };
FILE *myCommunicationsPipe = NULL;
char myReadBuffer[128];
myFlags = kAuthorizationFlagDefaults;
myStatus = AuthorizationExecuteWithPrivileges(myAuthorizationRef, myToolPath, myFlags, myArguments,
&myCommunicationsPipe);
if (myStatus == errAuthorizationSuccess)
for(;;)
{
int bytesRead = read (fileno (myCommunicationsPipe),
myReadBuffer, sizeof (myReadBuffer));
if (bytesRead < 1) break;
write (fileno (stdout), myReadBuffer, bytesRead);
}
AuthorizationFree (myAuthorizationRef, kAuthorizationFlagDefaults); // 17
}
if (myStatus)
{
printf("Status: %ld\n", myStatus);
SInt16 res;
StandardAlert(kAlertNoteAlert, "\pUpdater Error", "\pMay not have updated properly.", 0, &res);
}
else {
SInt16 res;
StandardAlert(kAlertNoteAlert, "\pUpdate Complete", "\pSuccessfully updated.", 0, &res);
}
return myStatus;
}
Смежные вопросы
- 1. Node.js: программная установка NODE_PATH
- 2. Установка шрифтов в NSIS
- 3. Установка нескольких шрифтов сервера
- 4. Установка шрифтов не работает
- 5. Служба Windows: установка шрифтов
- 6. Программная установка новых контактов Android на телефон
- 7. Программная установка корпоративных приложений в IOS
- 8. Программная установка списка многократного выбора silverlight
- 9. Программная установка случайного изображения в ImageButton
- 10. Программная установка MAVEN_OPTS из groovy-скрипта
- 11. Программная установка поля внутри модели в CakePHP
- 12. Программная установка имени столбца в dplyr :: top_n
- 13. UserControls - Программная установка длительности кэширования выходных данных?
- 14. Программная установка даты, выбранной в MS Chart?
- 15. Программная установка указателя записи в C# DataGridView
- 16. Практическое руководство: программная установка на окна?
- 17. Программная установка списка отзыва сертификатов C#
- 18. Программная установка плагина Eclipse из Eclipse?
- 19. Программная установка версии службы окна на ProjectInstaller
- 20. Программная установка цвета текста метки в GWT
- 21. Google DocumentsList API - программная установка Описание
- 22. Программная установка ограничений компоновки в UICollectionViewCell
- 23. установка шрифтов в клиентской машине
- 24. Установка стандартных шрифтов в C#
- 25. Установка новых шрифтов в CSS
- 26. Установка стандартных шрифтов в NSTextView
- 27. Установка пользовательских шрифтов на Scratch
- 28. Установка шрифтов с помощью NSIS
- 29. Установка дополнительных шрифтов на joomla
- 30. Установка шрифтов с установкой Inno - Замена шрифтов, которые заблокированы
Да, пожалуйста, api! :) – Avram
Добавлено больше деталей. Надеюсь это поможет; прошло несколько лет с тех пор, как я использовал это, поэтому все могло измениться, но это должно заставить вас двигаться в правильном направлении. –