Существует ли способ проверить, какие шрифты установлены на машинах через сеть?

Вот мой наиболее часто используемый скрипт ниже. Я использую это для запуска сценариев в двух таблицах / представлениях с заданием SQL и отправляю результаты в виде двух таблиц HTML по почте. Конечно, вы должны создать почтовый профиль перед запуском.

DECLARE @mailfrom varchar(max)
DECLARE @subject varchar(100)
DECLARE @tableHTML NVARCHAR(MAX), @tableHTML1 NVARCHAR(MAX), @tableHTML2 NVARCHAR(MAX), @mailbody NVARCHAR(MAX)
DECLARE @Table1 NVARCHAR(MAX), @Table2 NVARCHAR(MAX)
DECLARE @jobName varchar(100)
SELECT @jobName = name from msdb..sysjobs where job_id = $(ESCAPE_NONE(JOBID))

-- If the result set is not empty then fill the Table1 HTML table
IF (SELECT COUNT(*) FROM [Database].[Schema].[Table1]) > 0
BEGIN
SET @Table1 = N''
SELECT @Table1 = @Table1 + '<tr style="font-size:13px;background-color:#FFFFFF">' + 
    '<td>' + ColumnText + '</td>' +
    '<td>' + CAST(ColumnNumber as nvarchar(30)) + '</td>' + '</tr>'  
FROM [Database].[Schema].[Table1]
ORDER BY ColumnText,ColumnNumber

SET @tableHTML1 = 
N'<table border="1" align="Left" cellpadding="2" cellspacing="0" style="color:black;font-family:arial,helvetica,sans-serif;text-align:left;" >' +
N'<tr style ="font-size:13px;font-weight: normal;background: #FFFFFF"> 
<th align=left>ColumnTextHeader1</th>
<th align=left>ColumnNumberHeader2</th> </tr>' + @Table1 + '</table>'
END
ELSE
BEGIN
SET @tableHTML1 = N''
SET @Table1 = N''
END


-- If the result set is not empty then fill the Table2 HTML table
IF (SELECT COUNT(*) FROM [Database].[Schema].[Table2]) > 0
BEGIN
SET @Table2 = N''
SELECT @Table2 = @Table2 + '<tr style="font-size:13px;background-color:#FFFFFF">' + 
    '<td>' + ColumnText + '</td>' +
    '<td>' + CAST(ColumnNumber as nvarchar(30)) + '</td>' + '</tr>'  
FROM [Database].[Schema].[Table2]
ORDER BY ColumnText,ColumnNumber

SET @tableHTML2 = 
N'<table border="1" align="Left" cellpadding="2" cellspacing="0" style="color:black;font-family:arial,helvetica,sans-serif;text-align:left;" >' +
N'<tr style ="font-size:13px;font-weight: normal;background: #FFFFFF"> 
<th align=left>ColumnTextHeader1</th>
<th align=left>ColumnNumberHeader2</th> </tr>' + @Table2 + '</table>'
END
ELSE
BEGIN
SET @tableHTML2 = N''
SET @Table2 = N''
END

SET @tableHTML = @tableHTML1 + @tableHTML2

-- If result sets from Table1 and Table2 are empty, then don't sent mail.
IF (SELECT @tableHTML) <> ''
BEGIN
SET @mailbody = N' Write mail text here<br><br>' + @tableHTML
SELECT @mailfrom = 'SQL Server <' + cast(SERVERPROPERTY('ComputerNamePhysicalNETBIOS') as varchar(50)) + '@domain.com>'
SELECT @subject = N'Mail Subject [Job: ' + @jobName + ']'
    EXEC msdb.dbo.sp_send_dbmail
    @profile_name= 'mailprofilename',
    @recipients= '<mailaddress@domain.com>',
    @from_address = @mailfrom,
    @reply_to = '<mailaddress@domain.com>',
    @subject = @subject,
    @body = @mailbody,
    @body_format = 'HTML'
--   ,@importance = 'HIGH'
END
5
задан Thomaschaaf 3 June 2009 в 16:15
поделиться

8 ответов

Есть сценарий, который отображает кучу DIV в разных шрифтах, затем проверяет, имеет ли полученный DIV правильный размер для данного шрифта.

http: //www.lalit. org / lab / javascript-css-font-detect

10
ответ дан 18 December 2019 в 09:09
поделиться

Это возможно, если доступна Flash. См. http://www.maratz.com/blog/archives/2006/08/18/detect-visitors-fonts-with-flash/

3
ответ дан 18 December 2019 в 09:09
поделиться

Оформить заказ на подключаемый модуль jQuery FontUnstack из этого вопроса .

2
ответ дан 18 December 2019 в 09:09
поделиться

Вот список наиболее распространенных шрифтов на компьютерах Windows и Mac (со сравнением изображений каждого из них). Я использую его при выборе шрифтов для использования в проекте.

1
ответ дан 18 December 2019 в 09:09
поделиться

Не существует надежного способа определения установленных (и используемых) шрифтов на клиентском компьютере через браузер.

Flash может позволить вам это сделать, или, возможно, какой-то сумасшедший (но забавный) write) JavaScript, который делает предположения о размере элементов с заданным шрифтом - но этот сценарий может быть восприимчив к различиям в настройках клиента независимо от того, сколько случаев он рассматривает.

Я настоятельно рекомендую не использовать подход опроса / развертывания, который вы предлагают. Вам придется принять некоторые невозможные решения - например, какой процент доступности является приемлемым? Если это 100%, что вы будете делать, если появится новый пользователь, у которого нет этого шрифта? Если это не так,

1
ответ дан 18 December 2019 в 09:09
поделиться

Нет хорошего способа сделать это. Хотя, если у вас есть список шрифтов, которые вас интересуют, создайте класс с постоянно присутствующим запасным вариантом:

span#knownfont{font-family:Verdana, font-size:12px;}
span#font1{font-family:NonExistingFont1, Verdana, font-size:12px;}
span#font2{font-family:NonExistingFont2, Verdana, font-size:12px;}

...

Then create HTML for each case:
<span id="knownfont">Lorem ipsum dolor sit amet</span>
<span id="font1">Lorem ipsum dolor sit amet</span>
<span id="font2">Lorem ipsum dolor sit amet</span>

Затем напишите сценарий, который сравнивает ширину известного диапазона шрифтов и каждого из другие. Если ширина отличается, шрифт существует на клиенте.

0
ответ дан 18 December 2019 в 09:09
поделиться

Я знаю, что он еще не поддерживается всеми браузерами, но в css есть @ font-face, как описано здесь , поэтому, если вы знаете, что ваши пользователи используют IE (для пример) вы можете использовать это, чтобы получить шрифт.

0
ответ дан 18 December 2019 в 09:09
поделиться

Вы можете получить список шрифтов, установленных в клиентской ОС с помощью Flash:

var embeddedAndDeviceFonts:Array = Font.enumerateFonts(true);

Затем вы можете использовать ExternalInterface для перемещения этой информации между Flash и Javascript. Это не требует много кода.

Посмотрите мою статью в блоге об этом для получения дополнительной информации и демонстрационной реализации.

1
ответ дан 18 December 2019 в 09:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: